So habe ich ein Array von Objekten ab:Javascript benutzerdefinierte ein Array von Objekten für Jahr mit "pre Jahr
var a = {user: [
{year:'1950',name:'Joe'},
{year:'19XX',name:'Chris'},
{year:'1980',name:'Bob'},
{year:'1955',name:'Jan'}
]}
ich diese Daten verwenden, einfache Elemente Vorlage aus dem Jahr und den Namen zu halten. Ich habe auch Option über ein select-Element, um diese Daten zu sortieren und dann die sortierten zu verwenden, um es wieder in der Reihenfolge sortieren. (Bob, Chris, Jan, Joe) oder Jahr. Aber mein Problem beginnt mit dem Jahr.
Ich brauche der ein einfaches Plugin jsonQ (http://ignitersworld.com/lab/jsonQ.html) verwenden, um weiterhin Daten zu bearbeiten und sortieren, und müssen Daten für Jahr ein wenig anders als ab oder asc tatsächlich haben.
1. Ich muss die Daten in verschiedenen Teilen bearbeiten, wie Jahr (19XX sollte ‚Pre 1950‘ geworden):
//inside ajax success function
var dataObj = jsonQ(data);
dataObj.find('year').value(function (data){
if (data == '19XX') {
return 'pre 1953'
} else {
return data;
}
});
Jetzt werde ich ein Endprodukt Datensatz haben, die sortiert werden muss.
var orderedData = dataObj.sort('year', {'order' : 'ASC'});
Aber das gibt mir die Daten zurück:
{
user: [
{year:'1950',name:'Joe'},
{year:'1955',name:'Jan'},
{year:'1980',name:'Bob'},
{year:'Pre 1950',name:'Chris'}
]
}
Was ich brauche, ist die Daten zurückgegeben werden, wie:
{
user: [
{year:'Pre 1950',name:'Chris'},
{year:'1950',name:'Joe'},
{year:'1955',name:'Jan'},
{year:'1980',name:'Bob'}
]
}
Irgendwelche Vorschläge?
Sie müssen Ihre eigene Vergleichsfunktion definieren. Tatsächlich ist P lexikographisch größer als jede Ziffer. –