gpt4 book ai didi

javascript - 通过值对对象中的值进行排序 - js

转载 作者:行者123 更新时间:2023-12-01 01:34:25 24 4
gpt4 key购买 nike

为了更好地理解如何操作对象,我尝试根据对象的值对对象进行排序。

例如。

let obj = {
1: 5,
2: 4,
3: 200,
4: 3,
5: 1
}

我想要输出

{
3: 200,
1: 5,
2: 4,
4: 3,
5: 1
}

我循环访问了该对象,并将其键值对添加到一个新数组中,然后按值对其进行排序。

新数组看起来像这样

[
[3, 200],
[1, 5],
[2, 4],
[4, 3],
[5, 1]
]

然后我循环遍历这个数组并从中创建一个新对象,但它的结果是

{ 1: 5, 2: 4, 3: 200, 4: 3, 5: 1 }

为什么?

let obj = {
1: 5,
2: 4,
3: 200,
4: 3,
5: 1
}

const sortObj = o => {
const arr = [];
const _obj = {};

for (const v in o) arr.push([v, o[v]]);

arr.sort((a, b) => b[1] - a[1]);

for (const v of arr) {
console.log(v);
/*
[
[3, 200],
[1, 5],
[2, 4],
[4, 3],
[5, 1]
]
*/
const [key, val] = v;
console.log(key, val);
_obj[key] = val;
}

return _obj;
}

console.log(sortObj(obj));

最佳答案

好吧,上面已经有一个有效的答案,但我会发布它,因为我已经开始尝试排序并且有一个更短的版本。

相关阅读: Does JavaScript Guarantee Object Property Order?

let obj = {
1: 5,
2: 4,
3: 200,
4: 3,
5: 1
}
sortedObj = Object.keys(obj).sort((key1, key2) => {
if (obj[key1] > obj[key2]) {return -1;}
if (obj[key1] < obj[key2]) {return 1;}
return 0;
}).reduce((acc, key) => {
acc['i_'+key] = obj[key];
return acc;
}, {});

关于javascript - 通过值对对象中的值进行排序 - js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52960165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com