gpt4 book ai didi

javascript - 在 Javascript 中按多个属性对对象数组进行排序

转载 作者:行者123 更新时间:2023-12-02 15:43:00 24 4
gpt4 key购买 nike

我整天都在阅读类似的帖子,但不知道如何按多个属性对我的 javascript 数组进行排序。我的数组有“名称”和“类型”属性。要按名称排序,我现在使用:

                byNameDesc.sort(function (a, b) {
var x = a.name.toLowerCase();
var y = b.name.toLowerCase();
return y < x ? -1 : y > x ? 1 : 0;
});

效果很好。我想增强这个功能。如果“name”是“foo”,它应该始终位于顶部。我还想按“类型”排序。因此“foo”应该始终位于顶部,接下来按“名称”和“类型”排序。

我尝试过这个:

                byNameDefault.sort(function (a, b) {
if (a.name == 'foo') {
return -1;
}
var x = a.type.toLowerCase();
var y = b.type.toLowerCase();
return x < y ? -1 : x > y ? 1 : 0;
});

但这并没有奏效。

我不知道如何按“名称”和“类型”排序。

非常感谢任何帮助。

最佳答案

对于多个排序条件,您可以从第一个条件继续到最后一个条件:如果一个条件的两个条目不相等,您可以从排序函数返回结果 -1 或 1。此外,在最后一个条件下,您还可以为两个相等的输入返回 0。

以下是您的案例的示例实现:

byNameDefault.sort(function (a, b) {
// compare names
var na = a.name.toLowerCase();
var nb = b.name.toLowerCase();

if (na !== nb) {
if (na === 'foo')
return -1;
else if (nb === 'foo')
return 1;
else
return na < nb ? -1 : 1;
}

// compare types
return a.type < b.type ? -1 : a.type > b.type ? 1 : 0;
}

关于javascript - 在 Javascript 中按多个属性对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32440346/

24 4 0
文章推荐: javascript - Angular.js : How do I initialize the ng-model of a