从对象数组中选择特定属性 Angular

问题描述 投票:0回答:2

我有一系列对象,例如像下面这样。

[{ "foo" : "a", "bar" : "x", baz: 1},
{ "foo" : "b", "bar" : "y", baz: 2},
{ "foo" : "c", "bar" : "z", baz: 3}]

现在我只想从该数组中选择 foo 属性到另一个数组,例如

["a","b","c"]

我可以使用循环并将每个属性添加到另一个数组中来完成此操作

var fooArray =[];
angular.forEach(arrayName, function (value, key) {
    fooArray.push(value.foo);               
});

但是这是可能的,就像我们在 c# linq select 语句中所做的那样,而不需要像这样循环到数组中

var fooArray = arrayName.Select(m => m.foo) // c# way

有没有什么优雅的方式不需要我们循环?

jquery arrays angularjs linq
2个回答
23
投票

您可以使用如下所示的

map
功能。这是现代浏览器的脚本,我的意思是它可以在
IE8+
版本中完美运行。它在
IE8
旧版本中不起作用。

根据文档

map() 方法使用调用结果创建一个新数组 为该数组中的每个元素提供函数。

对数组的每个元素调用定义的回调函数,并且 返回包含结果的数组。

var result = arrayName.map(function(a) {return a.foo;});

0
投票

var result = arrayName.map(o=>o.foo)

© www.soinside.com 2019 - 2024. All rights reserved.