原始数组甚至修改了散布运算符

时间:2020-05-10 10:33:41

标签: arrays operator-keyword spread

我已经在寻找答案了好几周了,但是我不明白我在做什么错或期望错...

<video width="320" height="240" controls>
  <source src="assets/uploads/videos/en.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

2 个答案:

答案 0 :(得分:0)

使用Array.map()之前不需要传播,因为Array.map()会生成一个新数组。映射时,使用对象传播生成具有更新值的新对象:

const simpleArray = [{"weight": "2kg"},{"weight": "5kg"}];

function kilosNumber(arr) {
  return arr.map(o => ({
    ...o,
    weight: parseFloat(o.weight)
  }));
};

// It returns what I want
console.log(kilosNumber(simpleArray));

// But it modifyes the original
console.log(simpleArray);

答案 1 :(得分:0)

Spread语法会对数组进行浅表复制,因此不会克隆对象中的嵌套对象键,您也需要对其进行克隆而不是对其进行突变。同样,在使用Thread.sleep时,您需要使用返回值

map