如何在没有引用和 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'

您想要做的是 - 克隆数组内容。所以你有几个选择:

  1. 使用lodash
    • var newArr = _.cloneDeep(originalArr)
  2. 如果您确定,您只有简单的对象 - 您可以使用类似的东西:
    • var newArr = originalArr.map(d => Object.assign({}, d))
  3. 如果结构众所周知 - 您可以为结构编写 cloneFunction,而不是使用您自己的克隆 originalArr.map(cloneFunction)