javascript中复杂对象的排序数组
sorting array of complex objects in javascript
我有一个对象数组,例如:
var a = [
{ value: 500, name: 'ccc' },
{ value: 100, name: 'bbb' },
{ value: 500, name: 'aaa' },
{ value: 300, name: 'eee' },
];
我需要按value field的降序排序,和如果value field是相等的——然后按字段name的字母顺序对这两个对象排序。
我试着这样做:
a.sort(function (a, b) {
return b["value"] - a["value"] || (a["name"] > b["name"]) ? 1: -1;
});
但是这不会导致
500, aaa
500年,ccc
300年,eee
100年,bbb
问题是操作符优先级,您需要正确地加括号。
a.sort(function (a, b) {
return (b["value"] - a["value"]) || ((a["name"] > b["name"]) ? 1: -1);
});
逻辑操作符比三元操作符具有更高的优先级,因此需要将三元表达式用圆括号括起来。我添加了额外的冗余括号,使所有内容都显式。
测试结果:
[{"value":500,"name":"aaa"},
{"value":500,"name":"ccc"},
{"value":300,"name":"eee"},
{"value":100,"name":"bbb"}]
演示尝试创建一个单独的函数
function compare(a,b) {
if (a.value< b.value)
return -1;
if (a.value> b.value)
return 1;
if(a.value == b.value)
if (a.name< b.name)
return -1;
if (a.name> b.name)
return 1;
return 0;
}
a.sort(compare);
下面是工作示例:http://jsfiddle.net/8ZUdF/
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在数组的 2/3 上调用自身的排序算法
- 数组值的排序以匹配另一个数组ES6
- 按不同项目对对象数组进行排序
- 根据Javascript中的字符串值对数组的数组进行排序
- 在不同的javascript数组中对json响应进行排序
- 对对象数组中的数组进行排序
- 按特定键对对象数组进行排序
- 使用jquery根据数组对表行进行排序
- 尝试对对象数组进行排序但拼接不是一个函数
- 对javascript中某些键的对象数组进行排序
- Javascript按数字顺序排序()数组
- Javascript排序索引链接数组
- 在jquery中对时间数组进行排序
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- Javascript中的多维数组排序索引问题
- 如何在mongodb中根据数组内容的差异进行排序
- 在Javascript中对具有特定异常的对象数组进行排序
- 数组数据排序类似mysql查询
- 在小于O(n)时间内找到(排序)数组中的重复元素