首页 > 解决方案 > javascript中传播运算符的问题

问题描述

我想重写一个数组并在决赛中得到一个新的。这是我的代码:

const arr = [
  {
    type:"Fiat", model:"500", color:"white"
  },
  {
    type:"ford", model:"5300", color:"gray"
  }
];
const newArr = arr.map(i => {
    const r = {
      ...arr,
      power:2
    }
    return r
})



console.log(newArr)

现在我得到了错误的结果,因为每次迭代,新数组都会随着第一个数组的副本增长:

 const r = {
    ...arr,
    power:2
 }

如何获得下一个结果?

{
  type:"Fiat", model:"500", color:"white", power: 2
},
{
  type:"ford", model:"5300", color:"gray", power: 2
}

标签: javascript

解决方案


您正在传播arr。您需要传播i数组内的对象。

const arr = [
  {
    type:"Fiat", model:"500", color:"white"
  },
  {
    type:"ford", model:"5300", color:"gray"
  }
];
const newArr = arr.map(i => {
    const r = {
      ...i,
      power:2
    }
    return r;
})
console.log(newArr)

使用数组函数,您可以隐式地

const arr = [
  {
    type:"Fiat", model:"500", color:"white"
  },
  {
    type:"ford", model:"5300", color:"gray"
  }
];
const newArr = arr.map(i => ({...i, power: 2}));
console.log(newArr)


推荐阅读