2016-11-18 48 views
0

我有这个函数需要一个包含搜索对象数组的json参数。从数组中提取属性

function receiveSearch(search, json) { 
    return { 
     type: RECEIVE_SCHOOL_SEARCH, 
     items: json.packages, 
     receivedAt: Date.now(), 
     search: Object.assign({}, search, { next: json.next, start: search.next }), 
    }; 
} 

json 财产的样子:

>0:Object 
>1:Object 
>2:Object 
>3:Object 
...{ more } 

我想从JSON即namesuburb返回search对象的两个属性。我该怎么做呢?我宁愿使用像lodash/ramda /下划线整齐的东西,但普通的js很好。

而且每个对象都包含以下属性:

id:"10360" 
centreId:776 
name:"ABBOTSFORD" 
suburb:"TARNEIT" 
+0

你试过了什么? – nicovank

回答

0

使用的JavaScript可能使其中只包含必需的属性的新对象,并返回到您问题的最简单的解决方案。

只是假设您的JSON是这样的:

var x = {search:{id:"10360",centreId:776,name:"ABBOTSFORD",suburb:"TARNEIT"},otherProp:val} 

为了得到所需的性能,可以使其他功能与所需的字段返回对象:

function ReturnRequiredPropertyObject(anyObj) 
{ 
    var newObj = {}; 
    newObj.search = {}; 
    newObj.search.name = anyObj.search.name; 
    newObj.search.suburb = anyObj.search.suburb; 
    return newObj; 
} 

你可以把上面的代码在循环中,如果您正在获取搜索对象的数组。

为了使上面的代码一般,我们可以做到以下几点:

function ReturnRequiredPropertyObject(anyObj,requiredPropertyArray) 
{ 
    var newObj = {}; 
    for(var counter = 0;counter<requiredPropertyArray.length;counter++) 
    { 
     newObj[requiredPropertyArray[counter]] = anyObj[requiredPropertyArray[counter]]; 

    } 
    return newObj; 
} 

希望这会有所帮助。

0

好解决。

回答is

_.map(json,_.partialRight(_.pick,['name','suburb']));