3
votes

Comment trouver le nombre d'éléments d'un tableau à l'aide de l'objet Map

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);


3 commentaires

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.


5 Réponses :


3
votes

Utilisation de Array # reduction a > avec Carte.

Pour chaque itération, définissez le mot dans la carte.

a.get ("Lorem") renverra un nombre ou non. Le || gère s'il n'est pas défini. Ajoutez ensuite 1.

Map # set renvoie également l'objet de la carte.

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]);


1 commentaires

Très appréciée!



0
votes

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);


0 commentaires

0
votes

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);


0 commentaires

0
votes

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);


0 commentaires

0
votes

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>


3 commentaires

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.