我有一个对象数组:
var items= [{
id: "rev-ar",
qty: 13,
effect: [{
id: "after",
value: 3}]
}, {
id: "rev-plu",
qty: 2,
effect: [{
id: "rev",
value: 1}]
}];
//I want to sort it out first by name and then by effect.value so I did this:
var sorted = items.sort((a, b) => { //best revival items
if(a.id == b.id) {
return a.effect[0].value - b.effect[0].value;
} else {
return a.id - b.id;
}
}).filter(m => { return m.id.match('rev-'); });
console.log(sorted);
这首先输出rev-ar,但我想颠倒顺序,所以rev-plu首先出现,所以我这样做了:
return a.id - b.id;
但顺序还是没变为什么呢
谢谢大家。
1条答案
按热度按时间wa7juj8i1#
你减去了id,但它们不是数字
你所写的
a.x - b.x
适用于属性x
,* 如果 * 该属性是一个数字。但在这里,id
是一个 * 字符串 *!要比较字符串,请尝试以下操作:
反之亦然: