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

Cha*_*ari 14 linq arrays jquery angularjs

我有一个对象数组,例如下面的一个.

[{ "foo" : "a", "bar" : "x", baz: 1},
{ "foo" : "b", "bar" : "y", baz: 2},
{ "foo" : "c", "bar" : "z", baz: 3}]
Run Code Online (Sandbox Code Playgroud)

现在我想从这个数组中只选择foo属性到另一个数组

["a","b","c"]
Run Code Online (Sandbox Code Playgroud)

我可以使用循环并将每个属性添加到另一个数组作为

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

但是就像我们在c#linq select语句中所做的那样,没有我们循环到数组中

var fooArray = arrayName.Select(m => m.foo) // c# way
Run Code Online (Sandbox Code Playgroud)

没有我们循环,有没有优雅的方式?

Vin*_*eet 14

您可以使用map以下功能.它是现代浏览器的脚本我的意思是它将完美地在IE8+版本中工作.它不适用于IE8旧版本.

按照文档

map()方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数.

在数组的每个元素上调用已定义的回调函数,并返回包含结果的数组.

var result = arrayName.map(function(a) {return a.foo;});
Run Code Online (Sandbox Code Playgroud)