首页 > 解决方案 > 为什么在这种情况下默认数组发生了变异?

问题描述

let points = [{x:1,y:2},{x:2,y:2}];
let centroidsPoints = [1,2].map(() => []);
console.log(centroidsPoints); // => [[],[]]
let centroidsPointsCopy = [...centroidsPoints]; //copy array
points.forEach(point => {
  centroidsPointsCopy[0].push(point);
});
console.log(centroidsPointsCopy); // => [[{x:1,y:2},{x:2,y:2}],[]]
console.log(centroidsPoints); // => [[{x:1,y:2},{x:2,y:2}],[]] but expected [[],[]]

为什么我没有得到预期的行为,因为我复制了默认数组

[...centroidPoints]

抱歉,如果重复,我只找到“array1=array2”副本的答案;

标签: javascript

解决方案


推荐阅读