根据打字稿中的字符串属性排序对象数组

问题描述 投票:0回答:1

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

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。

typescript sorting angular7
1个回答
0
投票

我不确定为什么以上内容对您不起作用;但是以下对我有用:

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);
© www.soinside.com 2019 - 2024. All rights reserved.