Évaluation de 2 matrices extrêmement simples, une sorte d'accord et l'autre ne signifie pas: ce que je ne peux pas comprendre est pourquoi le tableau code> qtr code> ne sera pas trié correctement? p> p>
4 Réponses :
Parce que le tableau est déjà trié. Votre différence est faite par l'ID après "zzqtr_". Et les éléments sont déjà triés. P>
Je suppose que vous voulez trier par année, donc dans ce cas, vous devez mettre en place une fonction de tri personnalisée: p> P> Array.Prototype. trier () code> est comparer des séquences UTF-16, donc zzqtr_1, zzqtr_2, zzqtr_3, zzqtr_4 code> est déjà trié en fonction de cela, le dernier bit de texte (l'année) est pas pertinent là-bas. const qtr = ['zzqtr_1_2020','zzqtr_2_2020','zzqtr_3_2019','zzqtr_4_2019'];
qtr.sort((a, b) => {
const aParts = a.split('_');
const bParts = b.split('_');
return (parseInt(aParts[2]) - parseInt(bParts[2])) || a.localeCompare(b);
});
console.log(qtr.join(', '));
Le tableau est déjà trié. La chaîne après "zzqtr_" est en augmentation de la commande (à savoir: de 1 à 4). Donc, si vous avez fait quelque chose comme ceci:
var qtr = ['zzqtr_3_2020','zzqtr_1_2020','zzqtr_4_2019','zzqtr_1_2019']; qtr.sort(); var x = qtr.toString();
Au lieu de cela, envisagez d'utiliser array.pototype.sort () code> Les travaux en comparant les points de code UTF-16, qui peuvent entraîner des résultats inattendus parfois. P>
string.prototype.localecompare () CODE> Fonction, qui compare deux chaînes, en fonction des alphabets des points locaux et non de points de code UTF-16 P>
Il est i> Tri, mais c'est déjà dans l'ordre trié. Que pensez-vous être différent?
Quel était votre résultat attendu de " TRAY QRRA i>" Trier?
Je me demande s'il s'attend à ce qu'il soit trié comme une date, de sorte que les éléments
2019 code> devraient aller avant2020 code>.Si vous aimez obtenir les données triés par date, vous pourriez envisager d'utiliser des chaînes qui ont l'année devant le mois, comme un ISO 8601 chaîne de date. Ceci est trié, malgré le même préfixe.
@Ninascholz a également besoin de mois à 2 chiffres, sinon
12 code> trier avant3 code>