J'ai un paragraphe de mots et j'aimerais trouver le nombre de chaque mot, en utilisant spécifiquement l'objet Map
de JavaScript.
Je comprends que cela peut être réalisé en utilisant les méthodes .get ()
et .set ()
, mais je ne sais pas comment l'implémenter.
Voici mon code.
let paragraph = `Lorem ipsum donec nisi taciti et elit congue turpis, lobortis massa suscipit massa est a praesent metus egestas, conubia turpis in cursus libero pharetra praesent. Per bibendum taciti sit taciti facilisis a bibendum nisl massa non aliquam sem auctor ipsum eros, massa sed cubilia porta primis felis elementum non fringilla conubia neque aenean urna.` // Split the paragraph into an array of individual words. let words = paragraph.match(/\w+/gi); let map = new Map(); for (let i = 0; i < words.length; i++) { let word = words[i]; map.set(word, 0); // Logic - if (map contains word) { map.set(word, count += 1); } else { map.set(word, 1); } } console.log(map);
5 Réponses :
Utilisation de Array # reduction a > avec Carte. Pour chaque itération, définissez le mot dans la carte. Map # set renvoie également l'objet de la carte. a.get ("Lorem")
renverra un nombre ou non. Le ||
gère s'il n'est pas défini. Ajoutez ensuite 1. const paragraph = `Lorem ipsum donec nisi taciti et elit congue turpis, lobortis massa suscipit massa est a praesent metus egestas, conubia turpis in cursus libero pharetra praesent.
Per bibendum taciti sit taciti facilisis a bibendum nisl massa non aliquam sem auctor ipsum eros, massa sed cubilia porta primis felis elementum non fringilla conubia neque aenean urna.`
const words = paragraph.match(/\w+/gi);
const res = words.reduce((a,c)=>{
return a.set(c, (a.get(c)||0) + 1);
}, new Map());
console.log([...res]);
Très appréciée!
Avec la structure de données Map
, vous pouvez écrire votre code:
const paragraph = "Lorem ipsum donec nisi taciti et elit congue turpis, lobortis massa suscipit massa est a praesent metus egestas, conubia turpis in cursus libero pharetra praesent. Per bibendum taciti sit taciti facilisis a bibendum nisl massa non aliquam sem auctor ipsum eros, massa sed cubilia porta primis felis elementum non fringilla conubia neque aenean urna." // Split the paragraph into an array of individual words. let words = paragraph.match(/\w+/gi); let map = new Map(); for (let i = 0; i < words.length; i++) { let word = words[i]; // Here you check if map already got the word. if (map.has(word)) { map.set(word, map.get(word) + 1) } else { map.set(word, 0); } } console.log(map);
Vérifiez si la carte a la clé et si oui, récupérez-la et ajoutez-en 1, sinon ajoutez-la simplement.
let paragraph = `Lorem ipsum donec nisi taciti et elit congue turpis, lobortis massa suscipit massa est a praesent metus egestas, conubia turpis in cursus libero pharetra praesent. Per bibendum taciti sit taciti facilisis a bibendum nisl massa non aliquam sem auctor ipsum eros, massa sed cubilia porta primis felis elementum non fringilla conubia neque aenean urna.` // Split the paragraph into an array of individual words. let words = paragraph.match(/\w+/gi); let map = new Map(); for (let i = 0; i < words.length; i++) { let word = words[i]; // Logic - if (map contains word) { if(map.get(word)){ map.set(word, map.get(word) + 1); } else { map.set(word, 1); } } console.log(map);
Vérifiez si la carte a déjà la clé puis ajoutez 1
à un particulier et sinon ajoutez une nouvelle valeur de clé dans la carte.
let paragraph = `Lorem ipsum donec nisi taciti et elit congue turpis, lobortis massa suscipit massa est a praesent metus egestas, conubia turpis in cursus libero pharetra praesent. Per bibendum taciti sit taciti facilisis a bibendum nisl massa non aliquam sem auctor ipsum eros, massa sed cubilia porta primis felis elementum non fringilla conubia neque aenean urna.` let words = paragraph.match(/\w+/gi); let map = new Map(); for (let i = 0; i < words.length; i++) { let word = words[i]; if(map.get(word)) { map.set(word, map.get(word)+1); } else { map.set(word, 1); } } console.log(...map);
Définir les valeurs dans la carte
Array.from(myMap.keys()).forEach((key, value) => { console.log(`Count of word ${key} is: ${value}`); });
Extraire les valeurs de la carte
paragraph.split(" ").forEach((word) => { yourMap.set(word, word.length); });
p>
Comment l'index est-il lié au nombre de mots?
Je pense que la question est liée au "nombre d'éléments". Peut-être que je me trompe.
J'ai clarifié avec le questionneur et mis à jour ma réponse en conséquence.
Vous aimeriez donc savoir quels sont les caractères de chaque mot?
@jburtondev Pas tout à fait. Je suis après le décompte de chaque mot du paragraphe
Ah, je vois. Merci. J'ai mis à jour ma réponse.