获取 Javascript 中具有最高值的对象键
Get object keys with the highest value in Javascript
想象这样一个对象:
var values = {
"2": 1,
"53": 2,
"56": 4,
"57": 9,
"61": 2,
"62": 16,
"63": 2,
"398": 24,
...
}
我的目标是找到具有最高值的 10 个对象键。在这种情况下:398,然后是 62 等等 (= [398, 62, ...]
)。我知道如何将其放入数组中,但不知道如何接收 属性 键。
重要提示:我无法更改格式,因为它是服务器响应。
我尝试使用 for (key in values) {}
循环,但不知道如何继续。
This similar question 它的答案也不能真正帮助我。
您可以使用Object.keys
获取键值
var value = {
"2": 1,
"53": 2,
"56": 4,
"57": 9,
"61": 2,
"62": 16,
"63": 2,
"398": 24,
}
var parsedKeys = Object.keys(value).map(x => parseInt(x));
var sortedKeys = parsedKeys.sort(function (a, b) { return b - a; });
现在您可以通过 sortedKeys.slice(0, 10);
获得最高的前 10 个密钥
var value = {
"2": 1,
"53": 2,
"56": 4,
"57": 9,
"61": 2,
"62": 16,
"63": 2,
"398": 24
};
var sortable = [];
for (var key in value) {
sortable.push([key, value[key]]);
}
sortable.sort(function(a, b) {
return b[1] - a[1];
});
var result = [];
sortable.forEach(function(a) {
result.push(a[0]);
});
console.log(result.slice(0, 10));
您可以按值 属性 排序并分割结果。
var values = { 2: 1, 53: 2, 56: 4, 57: 9, 61: 2, 62: 16, 63: 2, 398: 24 },
result = Object
.keys(values)
.sort(function (a, b) { return values[b] - values[a]; })
.slice(0, 10)
.map(Number);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
如前所述:
- 创建键数组:
Object.keys(object)
- 根据值对数组进行排序:
sort((a,b)=> object[b] - object[a])
- 获取必要的值:
keys.slice(0,n)
var value = {2:1,53:2,56:4,57:9,61:2,62:16,63:2,398:24};
function getKeysWithHighestValue(o, n){
var keys = Object.keys(o);
keys.sort(function(a,b){
return o[b] - o[a];
})
console.log(keys);
return keys.slice(0,n);
}
console.log(getKeysWithHighestValue(value, 4))
想象这样一个对象:
var values = {
"2": 1,
"53": 2,
"56": 4,
"57": 9,
"61": 2,
"62": 16,
"63": 2,
"398": 24,
...
}
我的目标是找到具有最高值的 10 个对象键。在这种情况下:398,然后是 62 等等 (= [398, 62, ...]
)。我知道如何将其放入数组中,但不知道如何接收 属性 键。
重要提示:我无法更改格式,因为它是服务器响应。
我尝试使用 for (key in values) {}
循环,但不知道如何继续。
This similar question 它的答案也不能真正帮助我。
您可以使用Object.keys
获取键值
var value = {
"2": 1,
"53": 2,
"56": 4,
"57": 9,
"61": 2,
"62": 16,
"63": 2,
"398": 24,
}
var parsedKeys = Object.keys(value).map(x => parseInt(x));
var sortedKeys = parsedKeys.sort(function (a, b) { return b - a; });
现在您可以通过 sortedKeys.slice(0, 10);
var value = {
"2": 1,
"53": 2,
"56": 4,
"57": 9,
"61": 2,
"62": 16,
"63": 2,
"398": 24
};
var sortable = [];
for (var key in value) {
sortable.push([key, value[key]]);
}
sortable.sort(function(a, b) {
return b[1] - a[1];
});
var result = [];
sortable.forEach(function(a) {
result.push(a[0]);
});
console.log(result.slice(0, 10));
您可以按值 属性 排序并分割结果。
var values = { 2: 1, 53: 2, 56: 4, 57: 9, 61: 2, 62: 16, 63: 2, 398: 24 },
result = Object
.keys(values)
.sort(function (a, b) { return values[b] - values[a]; })
.slice(0, 10)
.map(Number);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
如前所述:
- 创建键数组:
Object.keys(object)
- 根据值对数组进行排序:
sort((a,b)=> object[b] - object[a])
- 获取必要的值:
keys.slice(0,n)
var value = {2:1,53:2,56:4,57:9,61:2,62:16,63:2,398:24};
function getKeysWithHighestValue(o, n){
var keys = Object.keys(o);
keys.sort(function(a,b){
return o[b] - o[a];
})
console.log(keys);
return keys.slice(0,n);
}
console.log(getKeysWithHighestValue(value, 4))