3

私は通常、これまでに持っているコードを投稿しますが、これには何もありません... :(

次の配列を並べ替えて、「パーセンテージ」キーの値に基づいて、低から高または高から低にするにはどうすればよいですか?

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

3 に答える 3

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/

于 2012-05-31T05:48:38.727 に答える
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'));
于 2012-05-31T05:55:37.553 に答える
2
data.sort(function(a,b){return a.percentage - b.percentage});

参照。_

于 2012-05-31T05:49:54.247 に答える