我有一些数组中的对象,并希望对它们进行排序。 应按度量值对对象进行排序。 所以我有以下function:
objectz.sort(function(a,b){ return b.metric - a.metric; }
问题是一些对象具有相同的属性值,并且排序的结果总是不同。我想通过其name属性对具有相同度量值的对象进行额外排序,因此每次对它们进行排序时,我都得到相同的对象顺序。
Thx提前!
objectz.sort(function(a,b){ var result = b.metric - a.metric; if (!result) return a.name > b.name ? 1 : -1; return result; });
与zerkms相似:
objectz.sort(function(a,b) { var x = b.metric - a.metric; return x || b.name - a.name; });
似乎是一种反向排序(首先出现更高的值),这是你想要的吗?
编辑
请注意, -
运算符仅适用于’name’的值可以转换为数字的情况。 否则,请使用<
或>
。 sort函数应该处理a.name == b.name, >
opertator本身不会这样做,所以你需要这样的东西:
objectz.sort(function(a,b) { var x = b.metric - a.metric; // If b.metric == a.metric if (!x) { if (b.name == a.name) { x = 0; else if (b.name < a.name) { x = 1; else { x = -1; } } return x; });
这可以更简洁:
objectz.sort(function(a,b) { var x = b.metric - a.metric; if (!x) { x = (b.name == a.name)? 0 : (b.name < a.name)? 1 : -1; } return x; });
鉴于metric
比较似乎是最大到最小的顺序,那么三元扩展应该是:
x = (b.name == a.name)? 0 : (b.name < a.name)? -1 : 1;
如果需要说塞尔达来到安。 此外, name
的值应该减少到所有小写(或全部大写),否则'zelda'和'Ann'将按照与'Zelda'和'ann'相反的顺序排序
以上就是jQuery教程分享按属性值排序对象相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/jquerytutorial/558094.html