javascript - 如何在没有引用的情况下克隆数组

标签 javascript

<分区>

我正在尝试将数组克隆到一个新数组,并且我希望克隆的数组不引用原始副本

我知道有 splicefrom 方法,但是这些方法中的新数组都引用了原始数组

例如

let original = [ [1,2], [3,4] ];
let cloned = Array.from(original); // this will copy everything from original 
original[0][0] = -1;
console.log(cloned[0][0]); // the cloned array element value changes too

我也尝试过使用循环来让 cloned[i][j] = original[i][j],但结果是一样的

我如何创建一个新数组,每个元素都具有与原始数组相同的值,但克隆的数组不应该引用原始数组?

谢谢!

最佳答案

通过使用此方法,我们可以创建数组的副本。请检查以下示例。归功于此 SO Answer

let original = [
  [1, 2],
  [3, 4]
];
let cloned = JSON.parse(JSON.stringify(original)); // this will copy everything from original 
original[0][0] = -1;
console.log(cloned); // the cloned array element value changes too
console.log(original);
.as-console {
  height: 100%;
}

.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}

关于javascript - 如何在没有引用的情况下克隆数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48219487/

相关文章:

javascript - 使用 Selenium 测试 Polymer 元素和阴影 DOM

javascript - Angular JS 处理 Ng 重复的 HTML5 视频和 $SCE

javascript - 切换嵌套列表中的链接不可单击

javascript - 如何为缺少的属性正确抛出错误?

javascript - 如何在更改时间时强制视频刷新事件帧?

javascript - 分机JS : How to select a combobox item within item's root/index value?

javascript - Jquery:如何在已缓存的图像上放置触发器?

javascript - 单线程如何阻止 JavaScript 中的 DOM 操作?

javascript 更改并发送多个复选框值

javascript - require.js + backbone.js : How to structure modules that have an initialize function?