基于对象属性排序数组 - Javascript

时间:2013-03-24 00:46:01

标签: javascript arrays sorting

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

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

我想根据对象z对此数组进行排序。如何使用sort()方法执行此操作?

3 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:4)

尝试在此处发布的其他答案,但后来发现以下内容效果最佳。

升序

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

降序

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

答案 2 :(得分:1)

向sort方法发送匿名函数,该方法返回属性“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”。