我有一个这样的数组:
[
{
foo: bar,
bar: foo,
},
{
foo: bar,
bar: baz,
},
{
foo: bar,
bar: foo,
},
]
我希望得到一个看起来像这样的数组:
[foo, baz, foo]
这可以用纯JS或下划线吗?我只需要支持现代浏览器。
答案 0 :(得分:3)
使用ES5(纯JS):
var result = thatArray.map(function (x) { return x.bar; });
或使用下划线:
var result = _.map(thatArray, function (x) { return x.bar; });
答案 1 :(得分:2)
UnderscoreJS有_.pluck()
_.pluck(yourArray,'bar')
=> [foo,baz,foo]
来自UnderscoreJS docs for _.pluck():
_.pluck(list, propertyName)
可能是最常见的用例的便捷版本 for map:提取属性值列表。
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}]; _.pluck(stooges, 'name'); => ["moe", "larry", "curly"]
答案 2 :(得分:1)
你可以通过Array.map
var result = arr.map(function(obj){
return obj.bar;
});
答案 3 :(得分:1)
纯JS:此代码将在非严格模式下运行。它可能不是最有效的方式。但是,我认为这很简单。
var A = [
{
foo: "bar",
bar: "foo",
},
{
foo: "bar",
bar: "baz",
},
{
foo: "bar",
bar: "foo",
},
]
var key = "bar";
var length = A.length;
var B = [];
for(var i = 0; i < length; ++i){
if(A[i][key]){
B[B.length] = A[i][key];
}
}
console.log(B);