0

我目前需要一个能够打开这个的 JS 函数:

[
    {
        prop1: 'val1',
        prop2: 'val2'
    },
    {
        prop1: 'val3',
        prop2: 'val4'
    },
    {
        prop1: 'val5',
        prop2: 'val6'
    }
]

进入这个:

['val1', 'val3', 'val5'] // we only took each object's .prop1

正如您可能已经通过这个问题的标题注意到的那样,我什至不确定正确的措辞方式(英语不是我的母语)。

结果,用谷歌搜索有点难,所以我自己写了;但我觉得有一些本机 JS 函数可以完成这项工作。在那儿 ?

(为了记录,这是我写的:)

function doSomethingByKey(objArr, key) {
    var result = [];

    for (i in objArr) {
        if (objArr[i].hasOwnProperty(key)) {
            result.push(objArr[i][key]);
        }
    }

    return result;
}
4

1 回答 1

1

遍历一组对象并获取每个对象的一个​​键通常称为“采摘”,尽管还有其他名称。在现代 Javascript 版本中,这可以用地图轻松实现:

var arr  = [{ foo : 'bar', baz : 42 }, { foo : ... }, ...],
    foos = arr.map(function (obj) { return obj.foo; });

如果你真的想把它抽象成一个函数:

function pluck(arr, key) {
    return arr.map(function (obj) { return obj[key]; });
}

pluck(arr, 'foo');

如果hasOwnProperty是一个问题,那么您的功能已经达到了最佳状态。

于 2013-09-04T14:40:34.290 回答