我可以根据对象数组中的键获取每个值吗?

时间:2014-12-09 14:31:47

标签: javascript underscore.js

我有一个这样的数组:

[
  {
    foo: bar,
    bar: foo,
  },
  {
    foo: bar,
    bar: baz,
  },
  {
    foo: bar,
    bar: foo,
  },
]

我希望得到一个看起来像这样的数组:

[foo, baz, foo]

这可以用纯JS或下划线吗?我只需要支持现代浏览器。

4 个答案:

答案 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);