作者:Lyj眼淚啲菋噵 | 来源:互联网 | 2023-05-24 15:49
当我在temp上使用splice时,mainArray也被修改了,这是正常的吗?
console.log(mainArray);
var temp = mainArray;
temp.airfares.splice(index, 1);
ssube..
5
这是因为temp
它不是一个全新的数组,只是一个引用mainArray
.你需要复制一份.
为了轻松制作数组的副本,使用Array.prototype.slice()
很常见.请注意,它不会复制每个元素,但会复制数组本身(因此您可以稍后推送或删除元素).
例如:
var data = [1, 2, 3, 4, 5];
document.getElementById("original").textCOntent= JSON.stringify(data);
var ref = data;
var copy = data.slice();
// Add some values to data, ref will change but copy won't
data.push(6, 7, 8);
document.getElementById("ref").textCOntent= JSON.stringify(ref);
document.getElementById("copy").textCOntent= JSON.stringify(copy);
1> ssube..:
这是因为temp
它不是一个全新的数组,只是一个引用mainArray
.你需要复制一份.
为了轻松制作数组的副本,使用Array.prototype.slice()
很常见.请注意,它不会复制每个元素,但会复制数组本身(因此您可以稍后推送或删除元素).
例如:
var data = [1, 2, 3, 4, 5];
document.getElementById("original").textCOntent= JSON.stringify(data);
var ref = data;
var copy = data.slice();
// Add some values to data, ref will change but copy won't
data.push(6, 7, 8);
document.getElementById("ref").textCOntent= JSON.stringify(ref);
document.getElementById("copy").textCOntent= JSON.stringify(copy);