我有一系列对象,例如像下面这样。
[{ "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
有没有什么优雅的方式不需要我们循环?
您可以使用如下所示的
map
功能。这是现代浏览器的脚本,我的意思是它可以在 IE8+
版本中完美运行。它在IE8
旧版本中不起作用。
根据文档
map() 方法使用调用结果创建一个新数组 为该数组中的每个元素提供函数。
和
对数组的每个元素调用定义的回调函数,并且 返回包含结果的数组。
var result = arrayName.map(function(a) {return a.foo;});
var result = arrayName.map(o=>o.foo)