【发布时间】:2018-05-30 00:12:08
【问题描述】:
为什么循环将变量值转换为另一个变量,该变量等同于循环只应更改的变量?
let arrr = [1,1,1,1,1];
let preArrr = [0,0,0,0,0];
preArrr = arrr;
for (let i=0; i < arrr.length; i++) arrr[i] = i;
console.log(arrr, preArrr) // arrr = [0,1,2,3,4], preArrr = [0,1,2,3,4]
forEach 循环给我同样的结果
arrr.forEach(function(e, i) { arrr[i] = i })
console.log(arrr, preArrr) // arrr = [0,1,2,3,4], preArrr = [0,1,2,3,4]
但如果我立即更改数组,它将无法连接
let arrr = [1,1,1,1,1];
let preArrr = [0,0,0,0,0];
preArrr = arrr;
arrr = [0,1,2,3,4]
console.log(arrr, preArrr) // arrr1 = [0,1,2,3,4], preArrr1 = [1,1,1,1,1];
那么,如何避免这种连接,但仍然使用循环?我正在尝试保存数组的先前状态
【问题讨论】:
-
你的代码没有意义,
arrr1是什么? -
preArrr = arrr;-preArrr的原始内容现在无关紧要...您刚刚将preArrr和arrr设置为同一个数组...let preArrr = arrr.slice()怎么样...现在值是相同的,但它不是同一个数组(注意,如果arrr的内容是对象,那么前面的语句不是很准确 - 但在这种情况下,你正在处理原始值,即1,而不是对象) -
@mackenzie-craig 抱歉,当然应该有“arrr”
-
@jaromanda-x 我明白了,thanx man
-
arrr = [0,1,2,3,4]new 数组,preArrr = arrr;
标签: javascript loops for-loop foreach