This question already has answers here:
Copy array by value
                                
                                    (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