This question already has answers here:
Copy array by value
(35个答案)
2年前关闭。
我有一段代码,它没有按预期工作。我创建了一个数组,并将其复制到一个新的数组中。我期望第二个不会更改它的值,但第一个似乎会更改它的值。我该如何避免?我想在按“重置”后打印初始值,但是当arrayStringDates2的值更改时aux的值也更改了。
(35个答案)
2年前关闭。
我有一段代码,它没有按预期工作。我创建了一个数组,并将其复制到一个新的数组中。我期望第二个不会更改它的值,但第一个似乎会更改它的值。我该如何避免?我想在按“重置”后打印初始值,但是当arrayStringDates2的值更改时aux的值也更改了。
var arrayStringDates2 = ["10/01/2017", "20/01/2018", "16/12/2015"];
var aux = arrayStringDates2;
document.getElementById("arrayStringDates2").innerHTML = arrayStringDates2;
document.addEventListener('click', function(event) {
if (event.target.id == "format2") {
for (i = 0; i < arrayStringDates2.length; i++) {
arrayStringDates2[i] = arrayStringDates2[i].replace(/["/"]/gi, "");
}
document.getElementById("arrayStringDates2").innerHTML = arrayStringDates2;
}
if (event.target.id == "resetFormat") {
console.log(aux)
document.getElementById("arrayStringDates2").innerHTML = aux;
}
}, false);
<button id="format2">
Format
</button>
<button id="resetFormat">
Reset
</button>
<div id="arrayStringDates2"></div>
最佳答案
aux
具有相同的指针引用,要克隆它,可以使用slice
方法。
var arrayStringDates2 = ["10/01/2017", "20/01/2018", "16/12/2015"];
var aux = arrayStringDates2.slice()
关于javascript - 基本的javascript-变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51763292/
10-09 23:33