我希望删除数组的前两个元素,并在稍后的代码中同时使用新的数组和模型。我的问题是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']
我应该如何继续?谢谢你的帮忙!
发布于 2017-04-12 00:29:06
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)
发布于 2017-04-12 00:29:47
使用对象分配复制原始数组
arrayTemp = Object.assign([], arrayModel).splice(0,2)发布于 2017-04-12 00:30:15
您可以在slice中使用负数
var a = ['a', 'b', 'c', 'd'];
var b = a.slice(-2);
console.log(a, b);
https://stackoverflow.com/questions/43351451
复制相似问题