[更改从数组的元素分配的变量时,数组中的该特定元素随变量而变化。但是,数组中没有要更改的数组。
在代码中,数组是对象的数组,在函数randomCentroid(质心)中声明并分配了变量,该函数在initializeCentroid中被调用。
该代码用于生成有关k均值聚类的随机质心,因此代码:
//Return random centroid points with coloring
let randomCentroid = (fill) => {
let r = Math.floor(Math.random()*points.length);
let centroid = points[r];
//points.splice(r, 1);
centroid.fill = fill;
return centroid;
}
//Gives distinct coloring to all centroid points
let initializeCentroids = (num) => {
let allCentroids = [];
for (let i = 0; i < num; i++) {
let color = colors(i);
let centroid = randomCentroid(color);
centroid.id = 'centroid' + '-' + i;
allCentroids.push(centroid);
}
return allCentroids;
}
//same for const.
let points = [{}, {}, {}, {}, {}],
colors = d3.scaleOrdinal(d3.schemeCategory10);
initializeCentroids(3);
console.log(points);
控制台:
index.js:29
(5)[{…},{…},{…},{…},{…}]
0:{fill:“#2ca02c”,id:“ centroid-2”}
1:{}
2:{fill:“#ff7f0e”,id:“ centroid-1”}
3:{fill:“#1f77b4”,id:“ centroid-0”}
4:{}
长度:5
proto:数组(0)
如何删除由数组分配的对象组成的变量与数组之间的依赖关系?
此部分:
let centroid = points[r]
正在获取对点数组中对象的引用
当更改centriod
时,您还要更改数组中的对象。