J'utilise javascript pour trier des tableaux imbriqués. Cela fonctionne comme je l'espère :
arr = [[223, "VA", "BP8"], [24, "VA", "BP31"], [127, "VA", "BP1"]]
arr.sort(function(a,b){
return a[2] > b[2];
});
//[[127, "VA", "BP1"], [24, "VA", "BP31"], [223, "VA", "BP8"]]
Mais lorsque je fais cela dans le navigateur avec plus de données, rien n'est trié après avoir effectué la commande sort
fonction. Il reste exactement comme il était avant d'appeler sort
. Une idée de ce qui ne va pas ici ? L'exemple ci-dessus correspond exactement aux données qui sont triées dans l'exemple ci-dessous, chaque tableau imbriqué est simplement plus long avec plus de données qui y sont poussées.
tableData = [];
arrayUtil.forEach(event.features, function (feature) {
var rowData = [];
rowData.push(feature.attributes.OBJECTID);
rowData.push(feature.attributes.StateID);
rowData.push(feature.attributes.Point);
rowData.push(feature.attributes.PatchNum);
rowData.push(developed(feature.attributes.IsDeveloped));
rowData.push(cropType(feature.attributes.CropTypeID));
rowData.push(feature.attributes.CropResidue);
rowData.push(feature.attributes.CnpyOver12);
rowData.push(feature.attributes.CnpyDecid);
rowData.push(feature.attributes.CnpyConif);
rowData.push(feature.attributes.ShrubCover);
rowData.push(feature.attributes.ShbHiStemsDens);
rowData.push(feature.attributes.GrassCover);
rowData.push(feature.attributes.ForbCover);
rowData.push(feature.attributes.FrbAsProtect);
rowData.push(feature.attributes.ForbSpecies);
rowData.push(feature.attributes.BareGround);
rowData.push(herbHght(feature.attributes.HerbHeight));
var overstoryDesc = coarseClassify(feature.attributes.Overstory);
rowData.push(overstoryDesc);
rowData.push(fineClassify(feature.attributes.Understory, overstoryDesc));
rowData.push(qhStatus(feature.attributes.OfficialQH));
rowData.push(formatDate(feature.attributes.ObsvDate));
rowData.push(collectionType(feature.attributes.ObsvType));
tableData.push(rowData);
});
//Sort the tableData list of lists by Point name
tableData.sort(function (a, b) {
return a[2] > b[2];
});