从数组中提取属性

Extracting properties from array

本文关键字:属性 提取 数组      更新时间:2023-09-26

我有这个函数,它接受一个包含搜索对象数组的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"

对于使用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;
}

Ok resolved

回答是

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