已经here,更重要的是here提出了这个问题。我尝试了所有答案,但没有一个解决了我的问题。这是非常基本的。
我有以下数组。进行拼接或执行任何破坏性操作后,我进行的各种尝试都不会持久。甚至副本都是突变的。我该如何复制它以便原始版本继续存在?
var arrs = [ [ 3 ], [ 7, 4 ], [ 2, 4, 6 ], [ 8, 5, 9, 3 ] ]
var arrsCopy1 = arrs.slice()
var arrsCopy2 = arrs.map(arr => {
return arr
})
var arrsCopy3 = [...arrs]
//test one of the copies
arrsCopy3.forEach(arr => {
return arr.splice(0, arr.length)
})
arrs, arrsCopy1, arrsCopy2, arrsCopy3 => [[],[],[],[]]
Here是一个小提琴,它演示了我的问题(使用reverse()
而不是splice
)
答案 0 :(得分:2)
您可以递归进行
const copyArr = (element) => {
//If the element is a primitive
if (element !== Object(element)) {
return element;
//The element is an array
} else {
return element.map(subelement => copyArr(subelement));
}
}
答案 1 :(得分:0)
尝试使用JSON
方法:
var arrCopy = JSON.parse(JSON.stringify(arr));
答案 2 :(得分:0)