关于基于对象属性的排序数组:基于对象属性排序数组 – Javascript

Sort Array based on Object Attribute - Javascript

本问题已经有最佳答案,请猛点这里访问。

我有一个名为canvasObjects的对象数组。

每个对象都有一个名为z的属性。

我想基于对象z对这个数组进行排序。如何使用sort()方法进行此操作?


只需将比较器传递给排序函数

1
2
3
4
5
6
7
8
9
function compare(a,b) {
  if (a.attr < b.attr)
     return -1;
  if (a.attr > b.attr)
    return 1;
  return 0;
}

canvasObjects.sort(compare);

或内联

1
canvasObjects.sort(function(a,b) {return (a.attr > b.attr) ? 1 : ((b.attr > a.attr) ? -1 : 0);} );

看这篇文章


尝试了其他的答案张贴在这里,但后来我发现以下工作最好。

提升:

1
canvasObjects.sort(function(a,b) { return parseFloat(a.z) - parseFloat(b.z) } );

降序:

1
canvasObjects.sort(function(a,b) { return parseFloat(b.z) - parseFloat(a.z) } );


将匿名函数发送到排序方法,该方法返回属性"z"的减法。

1
2
3
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"。