拼接改变我的初始数组

时间:2017-04-11 16:26:20

标签: javascript arrays slice splice

我希望删除数组的前两个元素,并在我的代码中稍后使用新数组和模型。我的问题是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']

我该怎么办? 谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

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)

答案 1 :(得分:0)

使用对象分配复制原始数组

  arrayTemp = Object.assign([], arrayModel).splice(0,2)

答案 2 :(得分:0)

你可以在切片中使用减号

var a = ['a', 'b', 'c', 'd'];
var b = a.slice(-2);

console.log(a, b);