【发布时间】:2023-02-21 21:41:18
【问题描述】:
我正在尝试对对象进行搜索以查找具有最高数值的对象属性。我设法做到了,但代码看起来很笨重。有更优雅的方法吗?
let nums = {
one: 1,
three: 3,
two: 2,
};
function searchObj(obj) {
let val = -Infinity,
key = null;
for (let i in obj) {
if (nums[i] > val) {
val = nums[i];
key = i;
}
}
return {
[key]: val
};
}
function searchObjAgain(obj) {
let result = Object.entries(obj).sort((a, b) => b[1] - a[1]);
return {
[result[0][0]]: result[0][1]
};
}
console.log(searchObj(nums));
console.log(searchObjAgain(nums));
【问题讨论】:
-
这个对你来说“看起来很笨重”怎么样,为什么?
-
第二个更短,但排序比对属性的单一线性传递更多的工作。
-
Object.entries() 返回嵌套数组并且我需要对其进行索引以获得结果这一事实似乎很麻烦。
标签: javascript object