Trier la carte JavaScript par clé décimale
P粉755863750
P粉755863750 2023-09-19 14:44:41
0
1
480

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 standardnew 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 avec0填充单个数字的方法,以实现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.

P粉755863750
P粉755863750

répondre à tous (1)
P粉501683874

Mais une foisMap()对象的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 utiliserparseFloat()si des comparaisons décimales sont requises.

const map = new Map(); map.set(3, "foo"); map.set(1, "foo"); map.set(8, "foo"); map.set(10, "foo"); map.set(5, "foo"); map.set(2, "foo"); map.set(4, "foo"); map.set(7, "foo"); map.set(6, "foo"); map.set(9, "foo"); // does not work: const mapFailedSort = new Map([...map.entries()].sort()); console.log(mapFailedSort); // works: const mapAsc = new Map([...map.entries()].sort((a, b) => +a[0] > +b[0] ? 1 : -1)); console.log(mapAsc)

Remarque : la console d'extraits de code semble être incompatible avec les objetsMap()- veuillez vérifier la sortie dans la console des outils de développement pour voir si l'ordre est correct.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!