【问题标题】:How to sort a multidimensional array in JavaScript如何在 JavaScript 中对多维数组进行排序
【发布时间】:2012-05-31 05:47:36
【问题描述】:

我通常会发布我目前拥有的代码,但我对此一无所知... :(

我将如何重新排序以下数组,以便我可以基于“百分比”键中的值(从低到高或从高到低)?

var data = [{
    "id": "q1",
    "question": "blah blah blah",
    "percentage": "32"
}, {
    "id": "q2",
    "question": "blah blah blah",
    "percentage": "23"
}, {
    "id": "q3",
    "question": "blah blah blah",
    "percentage": "11"
}, {
    "id": "q4",
    "question": "blah blah blah",
    "percentage": "3"
}, {
    "id": "q5",
    "question": "blah blah blah",
    "percentage": "6"
}]

【问题讨论】:

  • 那不是多维数组。这是一个对象数组。

标签: javascript jquery arrays json


【解决方案1】:

修正一下,它不是一个多维数组,它是一个对象数组,你很可能混淆了PHP的命名,对于你的问题,使用sort的可选函数参数来定义你自己的排序顺序。

data.sort(function(a, b) {
   return a.percentage - b.percentage;
})

// sorted data, no need to do data = data.sort(...);

http://jsfiddle.net/cEfRd/

【讨论】:

    【解决方案2】:

    排序器生成器,概括 https://stackoverflow.com/users/135448/siganteng 答案,使其适用于任何属性

    function  createSorter(propName) {
        return function (a,b) {
            // The following won't work for strings
            // return a[propName] - b[propName];
            var aVal = a[propName], bVal = b[propName] ;
            return aVal > bVal ? 1 : (aVal < bVal ?  - 1 : 0);
    
        };
    }
    data.sort(createSorter('percentage'));
    

    【讨论】:

      【解决方案3】:
      data.sort(function(a,b){return a.percentage - b.percentage});
      

      Ref

      【讨论】:

        猜你喜欢
        • 2014-01-19
        • 2017-11-09
        • 1970-01-01
        • 2011-10-23
        • 2011-08-31
        • 2012-11-27
        • 2017-07-03
        相关资源
        最近更新 更多