Sortierung mit Priorität in jquery oder js
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))
Das ist mein ist, wie ich meine Daten sortieren. Derzeit sortiert es das Alter von den ältesten bis zu den jüngsten. Es geht gut, wie es ist. Ich habe diese Sortierung in einem Post in SO gefunden.
Ich möchte eine weitere Anforderung an den Prozess hinzufügen. Ich will zuerst in der Lage sein, alle mit dem Typ lokal zu finden, sortiere es vom ältesten zum jüngsten , was alle lokalen zuerst vom ältesten zum jüngsten dann nach der Sortierung alle lokalen .. Sort den Rest vom ältesten zum jüngsten noch bedeutet.
UPDATE
:
Es wird eine andere Art, aber es tut hier wichtig, weil Alles was ich brauche ist es, zunächst die lokale alle zunächst in der Liste zu machen, aber immer noch in der ältesten bis zur jüngsten und dann der Rest ist noch in ältesten zu den Jüngsten.
Verwenden 'filter()' 'vor dem Aufruf von sort()': 'data.filter (d => d.type == 'local') sort (...' –
wie tun Sie. mag es die Sortierreihenfolge aufsteigend zu ändern, sollten die Einheimischen auch zuerst kommen? –
@RoryMcCrossan, wenn ich Filter verwendete, entfernte es die anderen Arten, die ich nicht will, dass ich nur lokal in der ersten Liste im ältesten bis jüngsten machen will dann wird der Rest am ältesten zum jüngsten sein – Giant