Javascript 为数组中的对象指定优先级值

Javascript 为数组中的对象指定优先级值,javascript,arrays,node.js,for-loop,foreach,Javascript,Arrays,Node.js,For Loop,Foreach,我有一个NodeJS程序,需要根据不同对象的CPU值为它们分配“优先级”。因此,我将所有对象存储在一个数组中,并根据CPU值的增加对该数组进行排序 我的阵列如下所示(cpu值不断变化): 因此,最低CPU值的优先级应为1,第二低优先级应为2,依此类推。我的想法是添加一个“优先级”属性,然后遍历数组中的每个元素,每次向优先级添加一个。然而,我如何做到这一点 这就是我迄今为止所尝试的: // sorts the array based on ascending cpu values lowerTha

我有一个NodeJS程序,需要根据不同对象的CPU值为它们分配“优先级”。因此,我将所有对象存储在一个数组中,并根据CPU值的增加对该数组进行排序

我的阵列如下所示(cpu值不断变化):

因此,最低CPU值的优先级应为1,第二低优先级应为2,依此类推。我的想法是添加一个“优先级”属性,然后遍历数组中的每个元素,每次向优先级添加一个。然而,我如何做到这一点

这就是我迄今为止所尝试的:

// sorts the array based on ascending cpu values
lowerThan95.sort(function(a, b) {
    return parseFloat(a.CPU) - parseFloat(b.CPU);
});

// what do I do here?
lowerThan95.forEach(function(value) {
    var priority = priority + 1
    console.log('pr', priority)
});

这是正确的方法吗?有更好的方法吗?如有任何帮助/提示,将不胜感激

对数组排序后,可以使用
forEach
循环为每个
索引+1

var lowerThan95=[{
“我的名字”:“abc”,
“CPU”:10
}, {
“我的名字”:“gfd”,
“CPU”:45
}, {
“我的名字”:“vfd”,
“CPU”:100
}, {
“myname”:“bvf”,
“CPU”:80
}]
低于95.sort((a,b)=>a.CPU-b.CPU).forEach((e,i)=>e.priority=(i+1))

console.log(低于95)
要解决排序问题,必须使用
a.CPU
b.CPU
。然后,您可以迭代排序数组并设置prioroty属性,如下所示:

var lowerThan95=[{
“我的名字”:“abc”,
“CPU”:10
}, {
“我的名字”:“gfd”,
“CPU”:45
}, {
“我的名字”:“vfd”,
“CPU”:100
}, {
“myname”:“bvf”,
“CPU”:80
}]
//根据递增的cpu值对数组进行排序
排序(函数(a,b){
返回parseFloat(a.CPU)-parseFloat(b.CPU);
});
//我在这里干什么?
对于(var i在95下方){
低于95[i]。优先级=+i+1;
};
控制台日志(低于95)
正如您所看到的,正如其他人所指出的,这段代码是毫无意义的,因为每个优先级都是长度减去索引。如果你真的想数一数:

lowerThan95.reduce((val,obj)=>obj.priority= ++val,0);

您真的需要对象的优先级吗?如果对其进行排序,则优先级始终是
length-index
,在您的情况下
priority==index
,因此您只需要数组中元素的索引就可以获得优先级,正如其他人所说,您实际上不需要优先级。但是,您的排序不起作用。
平均cpu
突然从何而来?@Connum纠正了好吧,公平地说,我们不知道OP在脚本后面想对这些对象做什么。也许他/她有充分的理由拥有一个基于1的优先级属性,该属性可以在以后处理这些对象时使用。这就是为什么我决定为他的需要发布一个答案。
lowerThan95.map(function(obj,index) {
    obj["priority"]=lowerThan95.length-index;
    return obj;
});
lowerThan95.reduce((val,obj)=>obj.priority= ++val,0);