【问题标题】:Sort Array based on Object Attribute - Javascript [duplicate]基于对象属性对数组进行排序 - Javascript [重复]
【发布时间】:2013-03-13 16:44:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript arrays sorting


    【解决方案1】:

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

    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

    【讨论】:

      【解决方案2】:

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

      升序

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

      降序

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

      【讨论】:

        【解决方案3】:

        将匿名函数发送到返回属性“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”。

        【讨论】:

          最近更新 更多