基于对象属性对数组进行排序 - 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据总值对对象数组列表进行排序

按对象属性对 javascript 对象数组进行排序

CoreData:使用 IN 基于谓词/数组进行排序

如何通过嵌套对象属性对 JavaScript 对象数组进行排序?

按对象属性对 javascript 对象数组进行排序

PHP - 按对象属性对对象数组进行排序[重复]