JavaScript映射 - 从带有名称的数组中选择一个属性

时间:2018-01-17 06:38:32

标签: javascript

我有这个数组:

[{a: 1, b: 2}, {a: 2, b: 3}, {a: 3, b: 1},...]

我想转换为这个数组:

[{a:1}, {a:2}, {a: 3}]

我试过了:

array.map(x => {'a': x.a}) 

但这是一个错误(给出错误)。 JavaScript中有没有可以执行此操作的功能?感谢

4 个答案:

答案 0 :(得分:7)

用括号包装隐式返回的对象并使用array.map的返回值:

let array = [{a: 1, b: 2}, {a: 2, b: 3}, {a: 3, b: 1}];
array = array.map(x => ({'a': x.a}));
console.log(array);

甚至更短的ES6解构和速记对象:

let array = [{a: 1, b: 2}, {a: 2, b: 3}, {a: 3, b: 1}];
array = array.map(({a}) => ({a}));
console.log(array);

答案 1 :(得分:5)

你几乎就在那里,只需将该表达式包裹在()

map(x => ({'a': x.a}))

<强>演示

var output = [{a: 1, b: 2}, {a: 2, b: 3}, {a: 3, b: 1}].map(x => ({'a': x.a}));

console.log(output);

答案 2 :(得分:1)

[{a: 1, b: 2}, {a: 2, b: 3}, {a: 3, b: 1}].map(element=>({'a': element.a}))

答案 3 :(得分:0)

  

我想转换为这个数组...

如果您不需要创建单独的数组,最好使用.forEach并从对象中删除属性b

&#13;
&#13;
var arr = [{
  a: 1,
  b: 2
}, {
  a: 2,
  b: 3
}, {
  a: 3,
  b: 1
}];

arr.forEach(function(x) {
  delete x.b;
});

console.log(arr);
&#13;
&#13;
&#13;