0
votes

Convertir 2 tableaux en objet de la valeur clé JavaScript

J'ai un tableau avec des en-têtes - Dites ["Langue", "Nom", "Code"] et un éventail de tableaux de valeurs - par exemple [["Anglais", "Matt", "2D"], ["Croate", "Dana", "8s"], ["russe", "Ivan", "2W"]]] .

J'essaie d'obtenir un éventail d'objets, comme: xxx

n'importe quel moyen élégant de le faire sans imbriquée pour les boucles?


2 commentaires

arr.map (valeurs => objet.fromentries (_. Zip (en-tête, valeurs)))


Quel est le problème avec des boucles imbriquées? Ce ne sera pas plus efficace que cela.


4 Réponses :


0
votes
const formatted4 = values.map(value => {
  let v = {};
  props.forEach((prop, i) => {
    v = {
      ...v,
      [prop]: value[i]
    }
  });
  return v;
});

0 commentaires

0
votes

Vous pouvez utiliser Array Destructuring (En supposant que vous êtes sûr que votre format de données reste le même):

const newArr = [];
for(const [language, name, code] of yourDataArray){
  //do whatever you want with the variables language, name, code
  newArr.push({
    language: language,
    name: name,
    code: code
  })
}


2 commentaires

Comment est l'objet.fromentries () entrer en jeu dans le code ci-dessus?


@Cipriana tu as raison, ce n'est pas le cas. Je viens de me rappeler que objet.fromentries () accepte une gamme d'itérables. J'ai oublié qu'ils devraient être des paires de valeurs clés qui ne s'appliquent pas à votre cas



0
votes

let props=["language", "name", "code"];
let data=[["English", "Matt", "2D"], ["Croatian", "Dana", "8S"], ["Russian", "Ivan", "2W"]];
let result=data.map( (innerArray) =>{let obj={};innerArray.forEach( (innerData,index) =>{obj[props[index]]=innerData;});return obj;
});
console.log(result);


0 commentaires

0
votes

Vous pouvez créer ceci sans complexité, si le nombre de données est constant, en utilisant ES6 * xxx


0 commentaires