1
votes

Récupérer les valeurs de chaque clé dans JS Object et pousser chaque ensemble de valeurs pour chaque clé vers son propre tableau

Je veux parcourir mes paires clé / valeur et pousser toutes les valeurs de chaque clé dans son propre tableau. Ces tableaux de valeurs de chaque clé doivent être poussés vers un seul tableau de sortie.

J'espère que cela explique ce que j'essaye de faire:

 let map = {};
  str.forEach(anagram => {
    const sortedWord = anagram
      .split("")
      .sort()
      .join("");
    map[sortedWord] = map[sortedWord] || [];
    map[sortedWord].push(anagram);
  });

C'est ce que je ont jusqu'à présent:

return Object.keys(map).reduce((output, key) => {
      return output.push(map[key])
  },[])

Toute aide pour parcourir les valeurs de chaque clé et ajouter ces valeurs à un tableau dans un autre tableau de sortie serait grandement appréciée.

Pour le fond, cela fait partie d'un problème de regroupement d'anagrammes donc je remplis ma carte comme suit à partir d'un tableau fourni "str" ​​de chaînes.

Input: map = {"hi":["hello","hey","howdy"],"bye":["Goodbye","Ciao"]}

Output:  output = [["hello","hey","howdy"],["Goodbye","Ciao"]]


0 commentaires

3 Réponses :


4
votes

Tout ce dont vous avez besoin est le Object.values ​​() :

Object.values ​​() renvoie un tableau dont les éléments sont les valeurs de propriété énumérables trouvées sur l'objet.

const map = {"hi":["hello","hey","howdy"],"bye":["Goodbye","Ciao"]};
const output = Object.values(map);

console.log(output);


0 commentaires

1
votes

L'utilisation de la réduction du retour pousse vers la "sortie", pas besoin de vous pousser:

  return Object.keys(map).map((key) => {
      return map[key]
  })

Vous pouvez également utiliser map:

  return Object.keys(map).reduce((output, key) => {
      return map[key]
  },[])

p >


0 commentaires

1
votes

En dehors des deux excellentes réponses ci-dessus, vous pouvez choisir d'utiliser Object.entries () , qui renverra un tableau de la paire [clé, valeur] de l'objet d'entrée. À partir de là, nous pouvons retourner uniquement la valeur dans le tableau résultant, vous donnant le résultat attendu.

const input = {"hi":["hello","hey","howdy"],"bye":["Goodbye","Ciao"]}

const result = []
for (const property in input) {
  result.push(input[property]);
}

console.log(result);

Cependant, notez que Object.entries () n'est pas pris en charge par les navigateurs Internet Explorer.

Alternativement, vous pouvez utiliser le bon vieux for..in instruction à parcourir les propriétés énumérables de l'objet, puis pousser les valeurs correspondantes vers le tableau résultant.

const input = {"hi":["hello","hey","howdy"],"bye":["Goodbye","Ciao"]}
const result = Object.entries(input).map(item => item[1]);

console.log(result);


0 commentaires