请查看Lodash的_.pluck()
函数或Underscore的_.pluck()
函数。这两个函数都可以在一次函数调用中完成您想要的操作!
var result = _.pluck(objArray, 'foo');
更新:自 Lodash v4.0.0 起,
_.pluck()
已被移除,推荐使用类似于
Niet's answer 的
_.map()
。
_.pluck()
仍可在 Underscore 中使用。
更新2:在评论中提到,在 Lodash v4 和 4.3 之间,添加了一个新函数以再次提供此功能。
_.property()
是一个简写函数,返回一个获取对象属性值的函数。
此外,
_.map()
现在允许将字符串作为第二个参数传递,该参数被传递到
_.property()
中。因此,以下两行代码与 Lodash 4 之前的示例代码等效。
var result = _.map(objArray, 'foo');
var result = _.map(objArray, _.property('foo'));
_.property()
,因此_.map()
,还允许您提供一个点分隔的字符串或数组,以便访问子属性:
var objArray = [
{
someProperty: { aNumber: 5 }
},
{
someProperty: { aNumber: 2 }
},
{
someProperty: { aNumber: 9 }
}
];
var result = _.map(objArray, _.property('someProperty.aNumber'));
var result = _.map(objArray, _.property(['someProperty', 'aNumber']));
上面示例中的两个_.map()
调用都将返回[5, 2, 9]
。
如果您对函数式编程有更深入的了解,请看看Ramda的R.pluck()
函数,它可能如下所示:
var result = R.pluck('foo')(objArray); // or just R.pluck('foo', objArray)
var foos = objArray.pluck("foo");
。 - PointyArray.prototype.map
函数。 - Alnitak_.pluck(objArray, "foo")
,然而这是Underscore库的一部分。最好的方法是使用ES6中可用的.map
。 - XAronX