我希望删除数组的前两个元素,并在我的代码中稍后使用新数组和模型。我的问题是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']
我该怎么办? 谢谢你的帮助!
答案 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);