从数组中提取属性

时间:2016-11-18 04:12:50

标签: javascript

我有这个函数,它接受一个包含搜索对象数组的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返回search对象的两个属性,即namesuburb。我该怎么做呢?我更喜欢使用像lodash / ramda / underscore那样整洁的东西,但普通的js很好。

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

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

2 个答案:

答案 0 :(得分:0)

好的解决了。

回答is

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

答案 1 :(得分: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;
}

希望这会有所帮助。