我有一个具有以下结构的JavaScript对象数组:
objArray = [ { foo: 1, bar: 2}, { foo: 3, bar: 4}, { foo: 5, bar: 6} ];
我想从每个对象中提取一个字段,并获得一个包含这些值的数组,例如,字段foo
将提供数组[ 1, 3, 5 ]
。
我可以用这个简单的方法做到这一点:
function getFields(input, field) {
var output = [];
for (var i=0; i < input.length ; ++i)
output.push(input[i][field]);
return output;
}
var result = getFields(objArray, "foo"); // returns [ 1, 3, 5 ]
有没有一种更优雅或更惯用的方式来做这件事,这样就不需要定制实用函数了?
关于suggested duplicate的说明,它涵盖了如何将单个对象转换为数组。
发布于 2017-10-12 01:33:49
这里有一个更简单的方法来实现它:
let result = objArray.map(a => a.foo);
或
let result = objArray.map(({ foo }) => foo)
您还可以查看Array.prototype.map()
。
发布于 2013-10-25 21:14:57
是的,但它依赖于JavaScript的ES5特性。这意味着它不能在IE8或更早的版本中工作。
var result = objArray.map(function(a) {return a.foo;});
在ES6兼容的JS解释器上,为了简洁起见,可以使用:
var result = objArray.map(a => a.foo);
发布于 2016-02-09 12:00:04
最好使用某种类型的库来实现跨浏览器的保证。
在Lodash中,您可以通过以下方法获取数组中属性的值
_.map(objArray,"foo")
在下划线中
_.pluck(objArray,"foo")
两个都会回来
[1, 2, 3]
https://stackoverflow.com/questions/19590865
复制相似问题