J'ai une carte avec le mois clé et la valeur clé 1
... 31
. Si je comprends bien, JavaScript convertit les clés de la carte en chaînes.
Après le tri selon le standard new Map([...myMap.entries()].sort())
, la carte est triée par clé comme suit :
1, 11, 12, 13, ..., 19, 2, 20, 21, 22, 23, ... 29, 3, 30, 31.
J'ai trouvé un moyen de convertir les clés décimales en chaînes et de les trier avec 0
填充单个数字的方法,以实现1,2,3,4,5, ...
:
mykey.toString().padStart(2, "0");
Je soupçonne que cette approche est trop artificielle et qu'il devrait y avoir une méthode JavaScript prédéfinie pour obtenir un tri normal des cartes par la valeur décimale de la clé.
Des suggestions sur la façon de mieux trier les cartes JavaScript par clé décimale ?
Essayénew Map([...myMap.entries()].sort())
- la carte est triée comme suit : 1, 11, 12, ..., 19, 2, 20, 21, 22, ... 29, 3, 30, 31.
Mais une fois
Map()
对象的key
中可以使用任何类型,但在使用默认的sort()
implémentés, ils sont mis en œuvre.Pour résoudre ce problème, vous devez implémenter votre propre logique de tri pour les comparer explicitement sous forme de valeurs numériques. Dans l'exemple ci-dessous, il utilise des nombres entiers, mais cela peut être facilement mis à jour pour utiliser
parseFloat()
si des comparaisons décimales sont requises.Remarque : la console d'extraits de code semble être incompatible avec les objets
Map()
- veuillez vérifier la sortie dans la console des outils de développement pour voir si l'ordre est correct.