gpt4 book ai didi

javascript - 通过多个键对javascript数组进行排序

转载 作者:行者123 更新时间:2023-11-30 09:47:58 24 4
gpt4 key购买 nike

我有一个像这样的对象数组

var itemArray = [
{
"name": "name1",
"flag": true,
},
{
"name": "name1",
"flag": false,
},
{
"name": "name2",
"flag": false,
},
{
"name": "name3",
"flag": true,
}
];

我已经使用以下方法按名称键对其进行排序:

var sortedItems = sortByKey(itemArray, "name");

function sortByKey(array, key) {
return array.sort(function(a, b) {
var x = a[key];
var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});

我还如何按标志键的字母顺序对它进行排序,使错误的标志出现在真正的标志之前? (如果这样更简单,我可以在标志属性上使用字符串而不是 bool 值)

澄清一下,我正在寻找的是一个数组,它会像这样返回,例如:

[
{ name: "name_a", flag: false },
{ name: "name_a", flag: true },
{ name: "name_b", flag: false },
{ name: "name_b", flag: true},
{ name: "name_c", flag: true},
{ name: "name_d", flag: false},
]

最佳答案

var sortedItems = sortByKey(itemArray, "name");

function sortByKey(array, key) {
return array.sort(function(a, b) {
if(a[key] == b[key]) {
return (a['flag'] ? -1 : 1);
} else {
var x = a[key];
var y = b[key];
return x.localeCompare(y);
}
});

关于javascript - 通过多个键对javascript数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37993399/

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