我希望删除数组的前两个元素,并在稍后的代码中同时使用新数组和模型。我的问题是splice()甚至在我的代码中更改了我的arrayModel。

这是我的代码

var arrayModel = ['a','b','c','d']

function dontAlterMyModel (arrayModel) {
  arrayTemp = arrayModel
  arrayTemp.splice(0, 2)
  console.log("arrayModel", arrayModel)
  console.log("arrayTemp", arrayTemp)
  return
}

dontAlterMyModel(arrayModel)


结果如下:

arrayModel [ 'c', 'd' ]
arrayTemp [ 'c', 'd' ]


而我想拥有:

arrayModel [ 'a', 'b', 'c', 'd' ]
arrayTemp [ 'c', 'd' ]


我尝试使用其他方法。

两次使用shift()也会改变模型

arrayTemp = array.slice(2)给了我与我想要的相反的东西:[ 'a', 'b']

我应该如何进行?
谢谢你的帮助!

最佳答案

Array#splice改变原始数组。我建议您使用Array#slice并将新数组存储在新变量中。



var arrayModel = ['a','b','c','d']

function dontAlterMyModel (arrayModel) {
  arrayTemp = arrayModel;
  var newArr = arrayTemp.slice(-2);
  console.log("arrayModel", arrayModel);
  console.log("arrayTemp", newArr);
}

dontAlterMyModel(arrayModel)

09-25 17:13