用数组内部的对象破坏分配

时间:2019-04-20 11:30:43

标签: javascript arrays object ecmascript-6

是否有一种方法可以使用解构赋值从对象数组中解压缩值?

[

{a : 1},
{a : 1},
{a : 1},
{a : 1}

]

我这里需要的结果是一个数组:[1,1,1,1]

5 个答案:

答案 0 :(得分:1)

解构将需要创建4个单独的变量,然后将它们重新组合到数组中。这将是非常湿的,并且没有多大意义,但是如果您必须进行以下操作:

const arr = [
  {a : 1},
  {a : 1},
  {a : 1},
  {a : 1}
]
const [{ a: item1 }, { a: item2 }, {a: item3}, {a: item4 }] = arr;
const newArrOfAs = [item1, item2, item3, item4];
console.log(newArrOfAs);

使用reduce的原始代码更好,但更合适的是使用Array.prototype.map,因为输入数组和输出数组的项是一对一的:

const arr = [
  {a : 1},
  {a : 1},
  {a : 1},
  {a : 1}
]
const newArrOfAs = arr.map(({ a }) => a);
console.log(newArrOfAs);

答案 1 :(得分:1)

您可以使用即将推出的Array#flatMap

var array = [{ a: 1 }, { a: 1 }, { a: 1 }, { a: 1 }];
    result = array.flatMap(Object.values);

console.log(result);

答案 2 :(得分:0)

您将使用.map()

const a = [

  {
    a: 1
  },
  {
    a: 1
  },
  {
    a: 1
  },
  {
    a: 1
  }

];


const b = a.map(val => val.a);

console.log(b);

答案 3 :(得分:0)

这应该有效。您可以使用foreach或地图

const array = [
  {a : 1},
  {a : 1},
  {a : 1},
  {a : 1}
]
let newArray = []
array.forEach(function(element) {
  newArray.push(element.a)
});
console.log(newArray)

答案 4 :(得分:0)

您应该只使用map

 

const arr = [
{a : 1},
{a : 1},
{a : 1},
{a : 1}
];

const res = arr.map(({ a }) => a);

console.log(res);