我有一个Node JS程序,我需要指定优先级'基于CPU值的不同对象。所以我将所有对象存储在一个数组中,并根据增加的CPU值对该数组进行排序。
我的数组看起来像这样(cpu值不断变化):
dom-repeat
因此,最低CPU值应优先级为1,第二低优先级优先级为2等。我的想法是添加优先级'属性,然后遍历数组中的每个元素,并每次添加一个优先级。但是我如何实现这一目标呢?
这是我到目前为止所尝试的:
var lowerThan95 = [{
'myname': 'abc',
'CPU': 10
}, {
'myname': 'gfd',
'CPU': 45
}, {
'myname': 'vfd',
'CPU': 100
}, {
'myname': 'bvf',
'CPU': 80
}]
这是正确的做法吗?有一个更好的方法吗?任何帮助/提示将不胜感激。
答案 0 :(得分:1)
要修复排序,您必须使用a.CPU
和b.CPU
。然后,您可以遍历已排序的数组并设置这样的prioroty属性:
var lowerThan95 = [{
'myname': 'abc',
'CPU': 10
}, {
'myname': 'gfd',
'CPU': 45
}, {
'myname': 'vfd',
'CPU': 100
}, {
'myname': 'bvf',
'CPU': 80
}]
// 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?
for (var i in lowerThan95) {
lowerThan95[i].priority = +i+1;
};
console.log(lowerThan95);
此答案不使用ECMA6箭头功能,以便与Internet Explorer和较旧的Android / iOS浏览器版本兼容。
答案 1 :(得分:0)
排序数组后,您可以使用forEach
循环为每个index + 1
分配优先级
var lowerThan95 = [{
'myname': 'abc',
'CPU': 10
}, {
'myname': 'gfd',
'CPU': 45
}, {
'myname': 'vfd',
'CPU': 100
}, {
'myname': 'bvf',
'CPU': 80
}]
lowerThan95.sort((a, b) => a.CPU - b.CPU).forEach((e, i) => e.priority = (i + 1))
console.log(lowerThan95)
答案 2 :(得分:0)
lowerThan95.map(function(obj,index) {
obj["priority"]=lowerThan95.length-index;
return obj;
});
正如您所看到的,正如其他人所指出的那样,这段代码非常无意义,因为每个优先级都是长度减去索引。如果你真的想要数数:
lowerThan95.reduce((val,obj)=>obj.priority= ++val,0);