JS制作数组的深层副本

时间:2018-03-12 12:35:12

标签: javascript arrays deep-copy

有什么方法可以制作变量的深层副本吗? (不是对象)。例如:

var a = ["String", "string"];
var b = a;

b.splice(1, 1);

b = a;

在我的示例中,a不应该更改,我想稍后使用它来恢复b。 (如上面的代码所示)。

我理解=只是提出了一个新的引用,因此问题是:还有其他方法可以制作深层副本而不是引用吗?

要注意我不能使用任何库,我找到了建议jQuery等的答案,但我不能使用它。

1 个答案:

答案 0 :(得分:2)

您是否测试过代码? var someList = new List<string>(); // Possibly added some values to the list. if (someList.Count() > 0) // Checking if it contains values then clearing it. someList.Clear(); // ... someList.Clear(); // Or just clear it without checking? 和其他基元被复制,未被引用。

&#13;
&#13;
Numbers
&#13;
&#13;
&#13;

使用其他示例编辑后:

&#13;
&#13;
var a = 1;
var b = a;
console.log(`a is ${a}`);
console.log(`b is ${b}`);
b++;
console.log(`a is ${a} (no change)`);
console.log(`b is ${b}`);
&#13;
&#13;
&#13;