首页 > 解决方案 > 当我已经将数组(参数)值传递给另一个进行修改时,为什么它会更改函数中的数组(参数)值?

问题描述

所以我需要原始(参数)数组保持不变,并有另一个数组(array2)及其值对其进行一些更改,但保持原始(参数)数组完好无损。

例子:

let wtf = function(array){
    let array2 = array
    array2[0] = array2[0].replace(array2[0][0],"1") 
    console.log( array + " "  + array2)
}

wtf(["a","b"])

结果在控制台: 1,b 1,b

但我需要 a,b 1,b (来自:array = a,b 和 array2 = 1,b)

谢谢!

标签: javascriptarrays

解决方案


我认为这是一个参考值与克隆值的问题。

对于您的let array2 = array行,我认为您正在创建对同一个内存对象的引用,因此您实际上是在修改一个数组两次,即使看起来您已经创建了另一个数组。

要创建“真正的”克隆,您可以尝试以下操作:

let array2 = JSON.parse(JSON.stringify(array));

推荐阅读