基于对象属性对数组进行排序 - Javascript [重复]
Posted
技术标签:
【中文标题】基于对象属性对数组进行排序 - Javascript [重复]【英文标题】:Sort Array based on Object Attribute - Javascript [duplicate] 【发布时间】:2013-03-13 16:44:03 【问题描述】:我有一个名为 canvasObjects
的对象数组。
每个对象都有一个名为z
的属性。
我想根据对象z
对该数组进行排序。如何使用sort()
方法做到这一点?
【问题讨论】:
【参考方案1】:您只需将比较器传递给排序函数
function compare(a,b)
if (a.attr < b.attr)
return -1;
if (a.attr > b.attr)
return 1;
return 0;
canvasObjects.sort(compare);
或内联
canvasObjects.sort(function(a,b) return (a.attr > b.attr) ? 1 : ((b.attr > a.attr) ? -1 : 0); );
看到这个POST
【讨论】:
【参考方案2】:尝试了此处发布的其他答案,但后来我发现以下方法效果最好。
升序:
canvasObjects.sort(function(a,b) return parseFloat(a.z) - parseFloat(b.z) );
降序:
canvasObjects.sort(function(a,b) return parseFloat(b.z) - parseFloat(a.z) );
【讨论】:
【参考方案3】:将匿名函数发送到返回属性“z”的减法的排序方法
var arr = [z:2,z:4,z:5,z:1,z:3];
arr.sort(function(a,b) return a.z - b.z);
上面将z中的数字按1、2、3、4、5的顺序排列。要反转顺序,请使其返回“b.z - a.z”。
【讨论】:
以上是关于基于对象属性对数组进行排序 - Javascript [重复]的主要内容,如果未能解决你的问题,请参考以下文章