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

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.

P粉755863750
P粉755863750

répondre à tous(1)
P粉501683874

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.

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 objets Map() - 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!