【发布时间】:2017-07-01 15:07:28
【问题描述】:
我有一个 Node JS 程序,我需要根据它们的 CPU 值为不同的对象分配“优先级”。所以我将所有对象存储在一个数组中,并根据增加的 CPU 值对该数组进行排序。
我的数组看起来像这样(cpu 值不断变化):
var lowerThan95 = [{
'myname': 'abc',
'CPU': 10
}, {
'myname': 'gfd',
'CPU': 45
}, {
'myname': 'vfd',
'CPU': 100
}, {
'myname': 'bvf',
'CPU': 80
}]
所以最低的 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)
});
这是正确的方法吗?有一个更好的方法吗?任何帮助/提示将不胜感激。
【问题讨论】:
-
你真的需要对象的优先级吗?如果已排序,则优先级始终为
length - index -
在你的情况下
priority == index所以你只需要数组中元素的索引就可以优先 -
正如其他人所说,您实际上并不需要优先级。但是,您的排序不起作用。
average_cpu怎么突然冒出来的? -
@Connum 已更正
-
好吧,说句公道话——我们不知道 OP 稍后想在脚本中对这些对象做什么。也许他/她有充分的理由拥有一个基于 1 的优先级属性,以后可以在处理这些对象时使用该属性。这就是为什么我决定为他的需求发布答案。
标签: javascript arrays node.js for-loop foreach