2017-08-22 2 views
0

La meilleure façon de convertirFaire un tableau dans un tableau en objets

a = [['tokyo', '10', '20'],['newyork', '30', '40'],['singapore', '50', '60']]; 

à

a = [{city:'tokyo', lat:'10', lon:'20'},{city:'newyork', lat:'30', lon:'40'},{city:'singapore', lat:'50', lon:'60'}]; 

Merci!

+3

Qu'est-ce que vous vous essayé? J'utiliserais 'Array.prototype.map'. – fubar

+0

Désolé mais l'exemple que vous avez donné n'est pas correctement formaté, donc c'est déroutant ce que vous voulez vraiment obtenir. il y a un "{" qui n'est fermé nulle part. Pas clair, voulez-vous que tous ces éléments soient dans un objet ou un tableau d'objets? De toute façon, vous pouvez utiliser réduire sur les tableaux pour faire beaucoup de choses ' – TheeBen

+0

Edited il devrait être plus clair maintenant. Je voulais dire avoir plusieurs objets dans un seul tableau. –

Répondre

2

Vous pouvez utiliser la fonction #map() pour le convertir dans le tableau de objets - voir démo ci-dessous:

var a = [['tokyo', '10', '20'],['newyork', '30', '40'],['singapore', '50', '60']]; 
 

 
var result = a.map(function(e) { 
 
    return { 
 
    city: e[0], 
 
    lat: e[1], 
 
    lon: e[2] 
 
    } 
 
},[]); 
 

 
console.log(result);
.as-console-wrapper{top:0;max-height:100%!important;}

+1

Merci cela a fonctionné! Prendre un cours javascript a été bloqué sur cela pendant un moment. Merci encore! –

1

Pas sûr de meilleure façon, mais je pense qu'il est lisible. Il utilise une méthode appelée .map() qui traverse chaque élément d'un tableau et le modifie généralement à votre convenance. Voir le code ci-dessous pour un exemple.

a = [['tokyo', '10', '20'],['newyork', '30', '40'],['singapore', '50', 
'60']]; 

const newArrayOfObjects = a.map(val => { 
    return { city: val[0], lat: val[1], lon: val[2] } 
}) 

newArrayOfObjects 

référence ici MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map