繁体   English   中英

按升序和降序对多个数组键进行排序,带数字的字符串

[英]Sort multiple array key's in ascending and descending order, string with number

我有一个JavaScript对象数组:

这不是重复的问题。 因为,我有一个具有2个键( keycount )的对象数组。 我想排序, key升序( 字符串 )和value降序( 数字 )。

 var array = [
  {"count":7,"key":"a"},
  {"count":10,"key":"b"},
  {"count":5,"key":"c"},
  {"count":10,"key":"a"},
  {"count":3,"key":"d"}
];

所需输出:

     var array = [
      {"count":10,"key":"a"},
      {"count":10,"key":"b"},
      {"count":7,"key":"a"},
      {"count":5,"key":"c"},
      {"count":3,"key":"d"}
    ];

 var array = [{"count":7,"key":"a"},{"count":10,"key":"b"},{"count":5,"key":"c"},{"count":10,"key":"a"},{"count":3,"key":"d"}]; console.log(array.sort((a, b) => (b.count - a.count))); 

key 升序排列

count降序

我已经使用array.sort((a, b) => (b.count - a.count))方法来对计数进行排序。 但是,无法弄清楚如何对两个键进行排序。

您必须使用逻辑|| 运算符localeCompare函数结合使用。

|| 如果b.count - a.count结果为零,则运算符仅考虑第二个分量。

 var array = [{"count":7,"key":"a"},{"count":10,"key":"b"},{"count":5,"key":"c"},{"count":10,"key":"a"},{"count":3,"key":"d"}]; console.log(array.sort((a, b) => b.count - a.count || a.key.localeCompare(b.key))); 

尝试跟随

 var array = [{"count":7,"key":"a"},{"count":10,"key":"b"},{"count":5,"key":"c"},{"count":10,"key":"a"},{"count":3,"key":"d"}]; console.log(array.sort((a, b) => { if(a.count === b.count) return a.key.localeCompare(b.key); return b.count - a.count; })); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM