按值对具有TypeScript的对象数组进行排序

ygya80vv  于 2022-12-14  发布在  TypeScript
关注(0)|答案(2)|浏览(132)

如何按对象值对对象数组进行排序?我使用的是TypeScript。

console.log(this.items);

输出量:

(6) [{…}, {…}, {…}, {…}, {…}, {…}]
{id: 3, ref: "P-201721", active: 1, visible: 1, weigth: 0.3, …}
{id: 4, ref: "P-201722", active: 1, visible: 1, weigth: 0.3, …}
{id: 1, ref: "P-201710", active: 1, visible: 1, weigth: 0.5, …}
{id: 2, ref: "P-201711", active: 1, visible: 1, weigth: 0.5, …}
{id: 5, ref: "P-201831", active: 1, visible: 1, weigth: 0.2, …}
{id: 6, ref: "P-201832", active: 1, visible: 1, weigth: 0.2, …}

我尝试了此操作,但数组保持相同的顺序:***

ioekq8ef

ioekq8ef1#

对一个对象数组进行排序可能有点棘手。你必须传入一个自定义的排序函数来定义你想要如何比较对象。否则.sort()怎么会知道你想要按id排序呢?也许你想要按权重排序。
我已经在https://codepen.io/anon/pen/PEReGE?editors=0012上做了一个例子,你可以用任何属性来代替id引用,如果你想用它来排序的话。

items.sort((a, b) => {
  if(a.id > b.id) {
    return 1;
  } else if(a.id < b.id) {
    return -1;
  } else {
    return 0;
  }
});

如果按数值属性排序,可以使用以下简写:

items.sort((a, b) => {
  return a.id - b.id;
});
jmo0nnb3

jmo0nnb32#

你可以使用Lodash来实现你想要的,你也可以通过在sortBy函数中传入数组中的键来使用多个排序选项。
第一个

相关问题