gpt4 book ai didi

javascript - 使用 Javascript 按另一个数组对 JSON 进行排序,其余按字母顺序排序

转载 作者:行者123 更新时间:2023-11-30 09:37:52 25 4
gpt4 key购买 nike

我想使用 Javascript 按另一个数组对 JSON 项目进行排序,然后按字母顺序对其余项目进行排序。

我有一个我想要获取 JSON 项的顺序数组:

var order = [3,9,50,7];

还有一个带有“ID”键的 JSON,我想使用顺序数组对其进行排序,其余不匹配的项目请使用“Name”键。

这是原始的 JSON:

var data = [
{
"id": "9",
"title": "B"
},
{
"id": "63",
"title": "Z"
},
{
"id": "433",
"title": "D"
},
{
"id": "50",
"title": "A"
},
{
"id": "2",
"title": "G"
}
]

这是我希望的最终结果:

var data = [
{
"id": "9",
"title": "B"
},
{
"id": "50",
"title": "A"
},
{
"id": "433",
"title": "D"
},
{
"id": "2",
"title": "G"
},
{
"id": "63",
"title": "Z"
}
]

最佳答案

您可以使用对象作为排序顺序,并使用默认值将其他 id 移到末尾。

var order = [3, 9, 50, 7],
data = [{ id: "9", title: "B" }, { id: "63", title: "Z" }, { id: "433", title: "D" }, { id: "50", title: "A" }, { id: "2", title: "G" }],
orderO = {};

order.forEach(function (a, i, aa) {
orderO[a] = i - aa.length; // use negative values and zero as default
});

data.sort(function (a, b) {
return (orderO[a.id] || 0) - (orderO[b.id] || 0) || a.title.localeCompare(b.title);
});

console.log(data);
console.log(orderO);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 使用 Javascript 按另一个数组对 JSON 进行排序,其余按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42611271/

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