我想对集合进行排序:
1) 只有“shared==true”列结果应该出现在最前面,所有其他结果都应该出现在单词之后。 尝试使用以下方法,但它不起作用并且显示随机。
var cmp= function (a, b) {
if (a.shared == 'true' && b.shared != 'true') return -1;
if (a.shared != 'true' && b.shared == 'true') return 0;
return 1;
}
var data= [{'id':1, 'name':'addd', 'shared':'true'},{'id':2, 'name':'addd1', 'shared':'false'},{'id':3, 'name':'addd2', 'shared':'true'}]
data.sort(cmp);
console.log(data);
最佳答案
快到了。在第二个 if
中,您希望返回 1。如果两者都为 true,您希望返回 0。因此您最后的返回应该是 return 0
。
var cmp = function(a, b) {
if (a.shared == 'true' && b.shared != 'true') return -1;
if (a.shared != 'true' && b.shared == 'true') return 1;
return 0;
}
var data = [{
'id': 1,
'name': 'addd',
'shared': 'true'
}, {
'id': 2,
'name': 'addd1',
'shared': 'false'
}, {
'id': 1,
'name': 'addd2',
'shared': 'true'
}]
data.sort(cmp);
console.log(data);
来自description :
if (a is greater than b by the ordering criterion) {
return 1;
}
关于javascript - 如何按 bool 字符串字段对 javascript 对象集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52785085/