我有一个数组items
,如下所示:
items.sort(function(a,b) {
});
a& b具有以下属性:
a.suggested (true, false, undefined)
a.meta.member_count (int .. 1 or more, undefined.
我想按如下方式对项目进行排序:
排序是正确的方法吗?关于如何在sort函数中实现这一点的任何建议?
谢谢
答案 0 :(得分:0)
这将按“建议”值排序,将false / undefined值置于true值之上。之后,它将按meta.member_count(最高的第一个)排序。
items.sort(function(a,b) {
if (a.meta.member_count === undefined) { x = 0; } else { x = a.meta.member_count;}
if (b.meta.member_count === undefined) { y = 0; } else { y = b.meta.member_count;}
if (a.suggested !== true) {
if (b.suggested !== true) {
n = x - y;
return n < 0 ? 1 : n > 0 ? -1 : 0;
}
return -1;
} else if (b.suggested === true) {
n = x - y;
return n < 0 ? 1 : n > 0 ? -1 : 0;
} else {
return 1;
}
});
这种情况下的关键在于将未定义的member_count值转换为0,以便我们可以用它们进行数学运算。
此外,在使用JavaScript sort()函数对数字进行排序时,请确保对实际数字进行数学运算,然后使用if语句返回1,-1或0.如果直接返回值之间的差异,它会将值作为字符串而不是数字进行比较。