问题描述
这是实现它的更短的方法:
let result = objArray.map(a => a.foo);
要么
let result = objArray.map(({ foo }) => foo)
你也可以检查Array.prototype.map()
。
解决方法
我有具有以下结构的 JavaScript 对象数组:
objArray = [ { foo: 1,bar: 2},{ foo: 3,bar: 4},{ foo: 5,bar: 6} ];
我想从每个对象中提取一个字段,并获取一个包含值的数组,例如 fieldfoo
将给出 array [ 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,5 ]
有没有更优雅或更惯用的方法来做到这一点,这样就不需要自定义实用功能了?
注意建议的 duplicate,它涵盖了如何将单个对象转换为数组。