为什么我的对象在循环时对它的动态值进行排序



我有这个函数分配动态键给初始化的对象

function meanCluster(clusters) {
let initialized = {};
clusters.forEach(mean => {
initialized[mean] = [];
})
return initialized;
}

我有这些数据

const OneDimensionPoint = [22, 9, 12, 15, 10, 27, 35, 18, 36, 11]

现在我想将元素22、9和12赋值为我在meanCluster函数中初始化的变量的键,我的方法是下面的代码。

let mean = [OneDimensionPoint[0], OneDimensionPoint[1], OneDimensionPoint[2]]
meanCluster(mean)

当我console.log(meanCluster(mean))时,结果是这样的

{9: Array(0), 12: Array(0), 22: Array(0)}

得到的键值是9,12,22而不是22,9,12

我的对象已经排序了,我不想。我也想保持它作为数字,而不是字符串。

谁能告诉我为什么?

您可以使用ES6 MAP:

const OneDimensionPoint = [22, 9, 12, 15, 10, 27, 35, 18, 36, 11] ;
let mean = [OneDimensionPoint[0], OneDimensionPoint[1], OneDimensionPoint[2]];
console.log(
mean.reduce((r,i)=>{
r.set(i,[])
return r;
}, new Map())
)

最新更新