如何在JavaScript中对多维数组进行排序

时间:2012-05-31 05:47:36

标签: javascript jquery arrays json

我通常发布到目前为止的代码,但我对此没什么...... :(

我如何重新订购以下数组,以便我可以将其基于'百分比'键中的值,从低到高或从高到低?

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"
}]

3 个答案:

答案 0 :(得分:5)

一点修正,它不是一个多维数组,它是一个对象数组,你最有可能混淆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/

答案 1 :(得分:4)

分拣器生成器,概括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'));

答案 2 :(得分:2)

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

Ref