javascript - 当我已经将数组(参数)值传递给另一个进行修改时,为什么它会更改函数中的数组(参数)值?
问题描述
所以我需要原始(参数)数组保持不变,并有另一个数组(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)
谢谢!
解决方案
我认为这是一个参考值与克隆值的问题。
对于您的let array2 = array
行,我认为您正在创建对同一个内存对象的引用,因此您实际上是在修改一个数组两次,即使看起来您已经创建了另一个数组。
要创建“真正的”克隆,您可以尝试以下操作:
let array2 = JSON.parse(JSON.stringify(array));
推荐阅读
- nested - Sequelize 中的嵌套 SELECT 查询
- android - E/WVMExtractor:无法打开 libwvm.so:dlopen 失败:未找到库“libwvm.so”
- python - 如何识别数组是否是对象数组python
- javascript - React 组件不接受 JSX Element 作为道具
- angular - 使用 matDatepicker 的角度动态列表
- python - AttributeError:“LGEOS360”对象没有属性“GEOSBufferWithParams”
- django - Django url路径冲突
- android - 表示实体的多个父关系
- php - 对特定产品类别应用折扣
- prolog - 在 Prolog 中检查元素是否在树中