我能够成功地找出对象中的最大值,但是有一个问题,那就是无法显示与该值相关联的键。
var obj = {
t1: 1,
t2: 33,
t3: 10,
t4: 9,
t5: 45,
t6: 101
//...
}
// create an array
var arr = [];
// loop through the object and add values to the array
for (var p in obj) {
arr.push(obj[p]);
}
// sort the array, largest numbers to lowest
arr.sort(function(a,b){return b - a});
// grab the first 10 numbers
var firstThree = arr.slice(0, 3);
console.log(firstThree);
它可以显示最高值,但我有一个困难的时间来显示键。
结果应该是
var result = {
t6: 101,
t5: 45,
t2: 33
}
8条答案
按热度按时间eh57zj3b1#
您可以获取条目,对它们进行排序和切片,然后通过将Map对象分配给单个对象来构建新对象。
lztngnrs2#
可以将对象而不是值推入数组,以便存储键
s8vozzvw3#
可以将包含键和值关联
arr.push({p: obj[p]})
的对象推送到数组中没有什么花哨的,但做的工作:-)
z9zf31ra4#
你可以做这样的事情
jdzmm42g5#
你可以先得到这个对象的值并排序,然后使用
Object.entries()
循环到这个对象的key-value,并确定这个值的键属于前3个值:还要注意,在使用object时,object中的键顺序实际上并不重要,因此
类似于
umuewwlo6#
使用
lodash
的替代解决方案rks48beu7#
f4t66c6m8#
对象的键不能保证保持顺序,所以不要相信它。
不过,创建并使用一个数组是安全的:
然后你可以对它做你想做的事情,它会保持那个顺序。