Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于对象属性的排序数组-Javascript_Javascript_Arrays_Sorting - Fatal编程技术网

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

基于对象属性的排序数组-Javascript,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个名为canvasObjects的对象数组 每个对象都有一个名为z的属性 我想根据对象对数组进行排序z。如何使用sort()方法实现这一点?您只需将一个比较器传递给sort函数即可 function compare(a,b) { if (a.attr < b.attr) return -1; if (a.attr > b.attr) return 1; return 0; } canvasObjects.sort(compare); 请参见此向

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

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


我想根据对象对数组进行排序
z
。如何使用
sort()
方法实现这一点?

您只需将一个比较器传递给sort函数即可

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

canvasObjects.sort(compare);

请参见此

向排序方法发送匿名函数,该方法返回属性“z”的减法


上面将数字按z的顺序排列为1,2,3,4,5。为了颠倒顺序,使其返回“b.z-a.z”。

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

上升

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

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