Sort Array based on Object Attribute - Javascript
本问题已经有最佳答案,请猛点这里访问。
我有一个名为
每个对象都有一个名为
我想基于对象
只需将比较器传递给排序函数
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"。