gpt4 book ai didi

javascript - 如何对这样格式的数组进行排序?

转载 作者:行者123 更新时间:2023-11-28 11:44:43 25 4
gpt4 key购买 nike

我试图按“墙”对这样的数组进行排序:

[{
"536606220753305611": { "walls": 4 },
"137616812886982656": { "walls": 5 },
"189862971520843776": { "walls": 4 },
"230433188491558913": { "walls": 2 }
}]

我似乎无法使用 array.sort 从 ids 中访问数组。

这是我尝试过的:

let top10 = array.sort(function(a,b){
return a.walls.localeCompare(b.walls).slice(0, 10);
});

它在这里不起作用,因为我找不到如何进入 id 数组。

我希望我记录的结果是按顺序排列的,但它显示的是:

[ { '536606220753305611': { walls: 4 },
'137616812886982656': { walls: 5 },
'189862971520843776': { walls: 4 },
'230433188491558913': { walls: 2 } } ]

谢谢!

编码专业

最佳答案

如果所需的输出是具有有序键的对象,则无法完成(JS 对象的属性本质上是无序的)。您可以首先将输入转换为对象数组,然后对它们进行排序......

let data = [{
"536606220753305611": { "walls": 4 },
"137616812886982656": { "walls": 5 },
"189862971520843776": { "walls": 4 },
"230433188491558913": { "walls": 2 }
}]

// transform the input object into an array of objects of the form:
//
// [ { "long string of digits" : { walls : 4 } },
// { "long string of digits" : { walls : 2 } },
// etc.
// ]
let data0 = data[0];
let objects = Object.keys(data0).map(k => {
return { k: data0[k] }
});

let sorted = objects.sort((a, b) => {
let keyA = Object.keys(a)[0];
let keyB = Object.keys(b)[0];
return a[keyA].walls - b[keyB].walls;

});

console.log(sorted)

关于javascript - 如何对这样格式的数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281659/

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