按照对象属性对数组进行排序 - Javascript

22

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

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

我希望使用sort()方法基于对象的z属性对该数组进行排序。如何实现?

3个回答

31
你只需要将比较器传递给排序函数。
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);} );

请查看此文章


7

我看到这里已经有其他的回答,但是我发现以下方法最为有效。

升序:

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

Descending :

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

2
把匿名函数传到sort方法中,该函数返回属性“z”的差值。
var arr = [{z:2},{z:4},{z:5},{z:1},{z:3}];

arr.sort(function(a,b) {return a.z - b.z});

以上代码将数字按1,2,3,4,5的顺序排序。要反转顺序,请将其改为返回"b.z - a.z"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接