我有一个JavaScript对象数组:
这不是一个重复的问题。因为,我有一个有2个键的对象数组(key
,count
)。我想排序,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))
方法进行排序计数。但是,无法弄清楚如何对对象的两个键进行排序。
试试以下
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;
}));
您必须将逻辑||
运算符与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)));