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

Phi*_*ide 13 javascript arrays sorting

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

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

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

小智 19

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

function compare(a,b) {
  if (a.attr < b.attr)
     return -1;
  if (a.attr > b.attr)
    return 1;
  return 0;
}

canvasObjects.sort(compare);
Run Code Online (Sandbox Code Playgroud)

或者内联

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

看到这个POST


Phi*_*ide 6

尝试了此处发布的其他答案,但后来我发现以下方法效果最佳。

升序

canvasObjects.sort(function(a,b) { return parseFloat(a.z) - parseFloat(b.z) } );
Run Code Online (Sandbox Code Playgroud)

降序

canvasObjects.sort(function(a,b) { return parseFloat(b.z) - parseFloat(a.z) } );
Run Code Online (Sandbox Code Playgroud)