我有一个像这样的对象数组:
0: {id: "743", name: "F"}
1: {id: "786", name: "S"}
2: {id: "903", name: "B"}
3: {id: "988", name: "L"}
4: {id: "1202", name: "S"}
5: {id: "1355", name: "H"}
6: {id: "1374", name: "R"}
而且我需要根据'name'属性对对象数组进行排序。
我一直在寻找答案,并尝试了每个答案,但并不高兴。我遇到的两个主要答案是:
Array.sort((leftSide, rightSide): number => {
if (leftSide.name.toLowerCase() < rightSide.name.toLowerCase()) return -1;
if (leftSide.name.toLowerCase() > rightSide.name.toLowerCase()) return 1;
return 0;
});
和
Array.sort((a, b) => a.name.localeCompare(b.name))
两者都给了我相同的未排序数组输出。还有其他方法吗?我正在使用Angular 7。
我不确定为什么以上内容对您不起作用;但是以下对我有用:
const x = [
{ id: "743", name: "F" },
{ id: "786", name: "S" },
{ id: "903", name: "B" },
{ id: "988", name: "L" },
{ id: "1202", name: "S" },
{ id: "1355", name: "H" },
{ id: "1374", name: "R" },
];
const sorted = x.sort((a, b) => a.name < b.name ? -1 : 1);
console.log(sorted);