首页 > 解决方案 > 尝试使用扩展运算符创建数组的副本,但有些数组正在发生变异

问题描述

我正在尝试练习不变性的概念。我将spliceTest数组用作创建数组副本并对其进行变异的主要参考。当我声明removeOneItem变量时,我遇到了问题,我无法使用相同的引用声明一个新的传播变量spliceTest

const removeOneItem = [...spliceTest.splice(0,0), ...spliceTest.splice(1)];
const removeFive = [...spliceTest.splice(0,4), ...spliceTest.splice(5)];
const spreadTest = [...spliceTest];
console.log('removeOneItem:', removeOneItem)
  console.log('spreadTest:', spreadTest, spliceTest)
  console.log('removeFive:', removeFive)

Results::::::::::::
removeOneItem: [ 2, 3, 4, 5, 6, 7, 8, 9 ]
spreadTest: [] []
removeFive: [ 1 ]

标签: javascriptarraysspreadarray-splice

解决方案


根据MDN

splice() 方法通过删除或替换现有元素和/或在适当位置添加新元素来更改数组的内容。

这意味着,拼接操作会改变你的数组


推荐阅读