Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript集合中的引用问题_Javascript_Arrays - Fatal编程技术网

javascript集合中的引用问题

javascript集合中的引用问题,javascript,arrays,Javascript,Arrays,我在javascript集合中遇到了某种引用问题 这是普朗克-> 问题是,当我 approverSteps[0].loadedApprovers.push({prop1: 'test'}); 然后,approverSteps集合中第二个元素(即approverSteps)的loadedApprovers属性也将得到更新。我知道这是一个参考问题,但不知如何解决 提前非常感谢。所有项目都将其加载的approvers数组作为对同一空数组的引用 const approvalStepDefault =

我在javascript集合中遇到了某种引用问题

这是普朗克->

问题是,当我

approverSteps[0].loadedApprovers.push({prop1: 'test'});
然后,approverSteps集合中第二个元素(即approverSteps)的loadedApprovers属性也将得到更新。我知道这是一个参考问题,但不知如何解决


提前非常感谢。

所有项目都将其
加载的approvers
数组作为对同一空数组的引用

const approvalStepDefault = {
  loadedApprovers: [] // this array
};
数组也是通过引用传递的(它们是对象)

试试这个:

// no need for approvalStepDefault

let data = {
    steps: [{id: '01'},{id: '02'}]
};

let approverSteps = (data.steps || []).map(item => {
    const obj =  Object.assign({}, item); // copy item so the original item will remain intact (remove this line if you don't want to work on a clone)
    obj.loadedApprovers = [];             // brand new array for each object
    return obj;
});

approverSteps[0].loadedApprovers.push({prop1: 'test'});
console.log(approverSteps);

你应该把你的代码放在你的问题中,描述你遇到的实际问题——发生了什么,你期望发生什么,它们是如何不同的,等等。