首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从对象数组中提取属性值作为数组

从对象数组中提取属性值作为数组
EN

Stack Overflow用户
提问于 2013-10-25 21:13:03
回答 16查看 1.2M关注 0票数 1.5K

我有一个具有以下结构的JavaScript对象数组:

代码语言:javascript
复制
objArray = [ { foo: 1, bar: 2}, { foo: 3, bar: 4}, { foo: 5, bar: 6} ];

我想从每个对象中提取一个字段,并获得一个包含这些值的数组,例如,字段foo将提供数组[ 1, 3, 5 ]

我可以用这个简单的方法做到这一点:

代码语言:javascript
复制
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的说明,它涵盖了如何将单个对象转换为数组。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2017-10-12 01:33:49

这里有一个更简单的方法来实现它:

代码语言:javascript
复制
let result = objArray.map(a => a.foo);

代码语言:javascript
复制
let result = objArray.map(({ foo }) => foo)

您还可以查看Array.prototype.map()

票数 2K
EN

Stack Overflow用户

发布于 2013-10-25 21:14:57

是的,但它依赖于JavaScript的ES5特性。这意味着它不能在IE8或更早的版本中工作。

代码语言:javascript
复制
var result = objArray.map(function(a) {return a.foo;});

在ES6兼容的JS解释器上,为了简洁起见,可以使用:

代码语言:javascript
复制
var result = objArray.map(a => a.foo);

Array.prototype.map documentation

票数 680
EN

Stack Overflow用户

发布于 2016-02-09 12:00:04

最好使用某种类型的库来实现跨浏览器的保证。

在Lodash中,您可以通过以下方法获取数组中属性的值

代码语言:javascript
复制
_.map(objArray,"foo")

在下划线中

代码语言:javascript
复制
_.pluck(objArray,"foo")

两个都会回来

代码语言:javascript
复制
[1, 2, 3]
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19590865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档