我目前需要一个能够解决这个问题的JS功能:
[
{
prop1: 'val1',
prop2: 'val2'
},
{
prop1: 'val3',
prop2: 'val4'
},
{
prop1: 'val5',
prop2: 'val6'
}
]
进入这个:
['val1', 'val3', 'val5'] // we only took each object's .prop1
正如你可能已经注意到这个问题的标题,我甚至不确定正确的方法(英语不是我的母语)。
因此,Googling很难找到,所以我写了自己的;但我觉得有一些原生JS功能可以完成这项工作。有吗?
(为了记录,这是我写的:)
function doSomethingByKey(objArr, key) {
var result = [];
for (i in objArr) {
if (objArr[i].hasOwnProperty(key)) {
result.push(objArr[i][key]);
}
}
return result;
}
答案 0 :(得分:1)
迭代一个对象数组并获取每个对象的一个键通常称为“plucking”,尽管还有其他名称。在现代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
是一个问题,那么你的功能就像它已经达到的那样最佳。