【问题标题】:Sort an array of objects based on values in the objects [duplicate]根据对象中的值对对象数组进行排序[重复]
【发布时间】:2014-05-29 06:18:27
【问题描述】:

我有一个对象数组

var winners_tie = [
    {name: 'A', value: 111},
    {name: 'B', value: 333},
    {name: 'C', value: 222},
]

我想按value的升序排序

【问题讨论】:

    标签: javascript sorting


    【解决方案1】:

    由于您的值只是数字,您可以从比较器函数返回它们的差异

    winners_tie.sort(function(first, second) {
        return first.value - second.value;
    });
    
    console.log(winners_tie);
    

    输出

    [ { name: 'A', value: 111 },
      { name: 'C', value: 222 },
      { name: 'B', value: 333 } ]
    

    注意: JavaScript 的排序不能保证是稳定的。

    【讨论】:

      【解决方案2】:

      试试这个:

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

      用于演示Js Fiddle

      【讨论】:

        【解决方案3】:

        对于数组:

        function sort_array(arr,row,direc) {
            var output = [];
            var min = 0;
        
            while(arr.length > 1) {
                min = arr[0];
                arr.forEach(function (entry) {
                    if(direc == "ASC") {
                        if(entry[row] < min[row]) {
                            min = entry;
                        }
                    } else if(direc == "DESC") {
                        if(entry[row] > min[row]) {
                            min = entry;
                        }
                    }
                })
                output.push(min);
                arr.splice(arr.indexOf(min),1);
            }
            output.push(arr[0]);
            return output;
        }
        

        http://jsfiddle.net/c5wRS/1/

        【讨论】:

          猜你喜欢
          • 2013-11-25
          • 2021-12-09
          • 1970-01-01
          • 2017-07-18
          • 1970-01-01
          • 2017-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多