对JavaScript对象数组进行排序是不起作用的

Sorting a JavaScript array of objects does not work

本文关键字:排序 不起作用 JavaScript 对象 数组      更新时间:2023-09-26

我有以下JavaScript对象:
console.log(myObject)的输出为:

[Object, Object]
0: Object
data: Array[19]
label: "Orange"
__proto__: Object
1: Object
data: Array[19]
label: "Black"
__proto__: Object
length: 2
__proto__: Array[0]

我需要通过label 对对象进行排序

我试过:

myObject.sort(function(a, b){ 
    return a.label - b.label;
});

这似乎不起作用。

Q:如何按label对对象进行排序?

您在字符串上预形成减法,这没有意义。相反,使用.localeCompare

myObject.sort(function(a, b){ 
    return a.label.localeCompare(b.label);
});

如果a小于b,则此方法返回负数;如果a大于b,则返回正数;如果相等,则返回0

因为.sort()方法期望回调中有一个数值,所以这非常有效。

您也可以使用比较运算符,尽管这与.localeCompare()不同,后者对unicode字符执行更复杂的比较,而不是简单的字节比较。

myObject.sort(function(a, b){ 
    return a.label < b.label ? -1 : a.label > b.label ? 1 : 0;
});