这个问题在这里提出,更重要的是在这里。我尝试了所有答案,没有解决我的问题。这是非常基本的。
我有以下数组。我的各种复制尝试在拼接后不会持续或执行任何破坏性动作。甚至副本也被突变。我如何复制它,以使原始版本持续存在?
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 => [[],[],[],[]]
这是一个小提琴,可以演示我的问题(使用reverse()
代替splice
)
您可以递归地做
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));
}
}
尝试使用JSON
方法:
var arrCopy = JSON.parse(JSON.stringify(arr));
我刚刚找到了这个问题,似乎可以解决问题。
我被扔掉了我的JSON.parse
。
var clonedArray = JSON.parse(JSON.stringify(originalArray));