javascript - 如何按 bool 字符串字段对 javascript 对象集合进行排序

标签 javascript arrays json sorting

我想对集合进行排序:

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/

相关文章:

javascript - HTML 文件中 javascript 的代码辅助在 Aptana 3 中无法正常工作

javascript - 主干 'this' 被设置为 'window'

javascript - 如何使用 Angular 访问数组中的 'Array'?

java - 无法从 JSON 获取响应

java - JSONTokener : A JSONObject text must begin with '{'

json - Perl JSON 验证函数

javascript - 创建变量并动态命名它们javascript

javascript - Rails - 如何正确实现支付/预订流程

java - 将 double 值传递到二维数组

c++ - 如何将 int* -或- float* 分配给 void* 并稍后使用结果?