如何在没有引用和 JSON parse/stringify 的情况下复制节点中的数组
How to copy a array in node without reference and JSON parse/stringify
我想复制一个全局静态数组来为每个用户会话个性化该数组。
我尝试使用 concat/slice/[...array]
复制该数组,但每次都需要相同的引用/指针。只有 JSON.parse(JSON.stringify(array))
似乎有效。
有没有更有效的方法来复制数组/对象/变量而不用它获取引用/指针
var Array2 = [...Array];
var Array2 = Array.concat();
var Array2 = Array.slice();
dosent work.
var Array = [{
test: 'i am a test'
}]
var Array2 = Array;
Array2.favorite = true;
console.log(Array) //result: test: 'i am a test', favorite: true
var Array3 = JSON.parse(JSON.stringify(Array));
console.log(Array) //result: test: 'i am a test'
您想要做的是 - 克隆数组内容。所以你有几个选择:
- 使用lodash
var newArr = _.cloneDeep(originalArr)
- 如果您确定,您只有简单的对象 - 您可以使用类似的东西:
var newArr = originalArr.map(d => Object.assign({}, d))
- 如果结构众所周知 - 您可以为结构编写
cloneFunction
,而不是使用您自己的克隆 originalArr.map(cloneFunction)
我想复制一个全局静态数组来为每个用户会话个性化该数组。
我尝试使用 concat/slice/[...array]
复制该数组,但每次都需要相同的引用/指针。只有 JSON.parse(JSON.stringify(array))
似乎有效。
有没有更有效的方法来复制数组/对象/变量而不用它获取引用/指针
var Array2 = [...Array];
var Array2 = Array.concat();
var Array2 = Array.slice();
dosent work.
var Array = [{
test: 'i am a test'
}]
var Array2 = Array;
Array2.favorite = true;
console.log(Array) //result: test: 'i am a test', favorite: true
var Array3 = JSON.parse(JSON.stringify(Array));
console.log(Array) //result: test: 'i am a test'
您想要做的是 - 克隆数组内容。所以你有几个选择:
- 使用lodash
var newArr = _.cloneDeep(originalArr)
- 如果您确定,您只有简单的对象 - 您可以使用类似的东西:
var newArr = originalArr.map(d => Object.assign({}, d))
- 如果结构众所周知 - 您可以为结构编写
cloneFunction
,而不是使用您自己的克隆originalArr.map(cloneFunction)