如何按对象值对对象数组进行排序?我使用的是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, …}
我尝试了此操作,但数组保持相同的顺序:***
2条答案
按热度按时间ioekq8ef1#
对一个对象数组进行排序可能有点棘手。你必须传入一个自定义的排序函数来定义你想要如何比较对象。否则.sort()怎么会知道你想要按id排序呢?也许你想要按权重排序。
我已经在https://codepen.io/anon/pen/PEReGE?editors=0012上做了一个例子,你可以用任何属性来代替id引用,如果你想用它来排序的话。
如果按数值属性排序,可以使用以下简写:
jmo0nnb32#
你可以使用Lodash来实现你想要的,你也可以通过在sortBy函数中传入数组中的键来使用多个排序选项。
第一个