var data = [{
"type": "local",
"name": "Frank",
"age": 89
}, {
"type": "visitor",
"name": "Mary",
"age": 76
}, {
"type": "local",
"name": "John",
"age": 36
}, {
"type": "visitor",
"name": "James",
"age": 10
}, {
"type": "local",
"name": "Lily",
"age": 17
}, {
"type": "visitor",
"name": "Harry",
"age": 67
}, {
"type": "local",
"name": "Larry",
"age": 7
}, {
"type": "visitor",
"name": "Harold",
"age": 37
}]
var sort_by = function(field, reverse, primer) {
var key = primer ?
function(x) {
return primer(x[field])
} :
function(x) {
return x[field]
};
reverse = !reverse ? 1 : -1;
return function(a, b) {
return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
}
}
data = data.sort(sort_by('age', true, parseFloat));
console.log(JSON.stringify(data))
。現在は、年齢を年齢順に並べ替えています。それはそれなりにうまくいっています。私はソートでこのソートを見つけました。
私はプロセスに別の要件を追加したいと思います。私はまず、すべてのタイプをローカルで並べ替えることができるようにしたいと思っていますすべてのローカル最初に古いものから最も若いものへ次にすべてのローカルを並べ替えた後に残りのものを古いものから最も若いものに並べ替えます。
UPDATE
:
あります別のタイプがあるが、私は必要なのは、まず最初のリスト内でのすべてをローカルにすることですが、まだ最古に最年少にして、残りは最古にまだあるので、それはここで問題doesntの最も若い。
使用 'フィルタ()' 'ソート()'を呼び出す前に:あなたはどのように 'data.filter(D => d.type == 'ローカル')をソート(...' –
。並べ替え順序を昇順に変更したいのですが、地元住人も先に来るべきでしょうか? –
@RoryMcCrossanもし私が他のタイプを削除したフィルタを使用した場合、私はほんの一番古いものから最も若いものまでリストを作成したいと思っています。残りは最も古いものから最も若いものになります – Giant