按委员会,然后按用户角色对数组进行排序

吗啡主义

我有一个包含类似于此数据的数组:

var committees = [
  {
    committee: "Apple Com",
    userRole: "Member",
    membersNum: 11
  },
    {
    committee: "Orange Com",
    userRole: "Member",
    membersNum: 9
  },    {
    committee: "Banana Com",
    userRole: "",
    membersNum: 13
  },    {
    committee: "Strawberry Com",
    userRole: "Vice President",
    membersNum: 15
  },    {
    committee: "Lemon Com",
    userRole: "",
    membersNum: 13
  },
  {
    committee: "Mango Com",
    userRole: "Chair",
    membersNum: 11
  },
]

我希望它们首先按照用户角色进行排序,然后再按委员会进行排序委员会”字段将始终具有一个值,而“用户角色”字段有时将为null

当前,我为实现此目的正在将数组分为两个数组。第一个数组将仅返回User Role不为null的项目第二个数组返回用户角色null的项目接下来,我按委员会升序排列每个数组,然后将它们连接起来。因此逻辑如下:

  //get committees user is member of and committees user is not member of
  var memberOf = [];
  var nonMemberOf = [];
  for(var i=0; i<committees.length; i++){
    if(committees[i].userRole){
      memberOf.push(committees[i]);
    } else {
      nonMemberOf.push(committees[i]);
    }
  }  
  memberOf.sort(function(a,b){return (a.committee > b.committee) ? 1 : -1; });
  nonMemberOf.sort(function(a,b){return (a.committee > b.committee) ? 1 : -1; });

  var allComs = memberOf.concat(nonMemberOf);

我已经花了3个多小时来阅读并尝试实现我在此处的某些帖子中所阅读的内容:

我认为,有一种更好的方式可以做我正在做的事情,但无法弄清楚。如果有人可以在这里说些什么,我将非常感谢。

PS我不是要有人为我做这件事,我想了解如何做。对于那些可以帮助的人,请先感谢!

一定的表现

尝试sort按每个比较项之间的布尔值差异进行比较userRole,或者按一下得出的结果0(即,如果两者都起作用或都没有作用),则按committees进行排序

var committees=[{committee:"Apple Com",userRole:"Member",membersNum:11},{committee:"Orange Com",userRole:"Member",membersNum:9},{committee:"Banana Com",userRole:"",membersNum:13},{committee:"Strawberry Com",userRole:"Vice President",membersNum:15},{committee:"Lemon Com",userRole:"",membersNum:13},{committee:"Mango Com",userRole:"Chair",membersNum:11},]

committees.sort((a, b) => (
  Boolean(b.userRole) - Boolean(a.userRole)
  || a.committee.localeCompare(b.committee)
));
console.log(committees);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按数字然后按字母对数组列表进行排序

在Java中按长度先对数组排序,然后按字母顺序对数组进行排序

JavaScript按可为空的布尔值,然后按字符串对数组进行排序

按名称然后按日期对数据框进行排序,同时保持名称排序

按特定列对数组排序,然后按此列的值排序

过滤然后按日期对对象数组进行排序

Laravel-首先按字符串值对数组进行排序,然后按日期排序

按组中的位置对数据框进行排序,然后按该组

按索引然后按列对数据框进行排序

按字段对对象数组进行排序,然后按字母顺序排序

按字母顺序对字符数组进行排序,然后按长度排序

对数组进行排序:首先按定义的顺序按1个元素,然后按合计2个其他元素

按字母顺序对数据表进行字母排序,然后按R中的数字值排序

用每个用户的计数进行注释,然后按最新出现的日期排序

Javascript-按日期然后按时间对对象数组进行排序

对对象数组进行排序,然后按ID分组(JavaScript)

如何先按字母然后按数字组合对字符串数组进行排序?

目录进入数组,然后按创建日期对文件进行排序

清理数值数组中的未定义项目,然后按javascript对其进行排序

按数组元素对数组进行排序

按值然后按键对字典进行排序

按值然后按键对字典进行排序

按值然后按键对字典进行排序

python按值对字典项进行排序,然后按键

按值然后按键对 Map<Int, Int> 进行排序

如何按字母顺序对 csv 数据进行排序,然后按列按数字排序?

C#-按州然后按城市对数据排序的最简单方法

按孩子的孩子对数组进行排序

按特定顺序对数组进行排序