Changer le tableau en javascript en objet plus simple




arrays (3)

Fondamentalement, vous devez utiliser forEach au lieu de map , puis vous pouvez construire cet objet avec la paire clé / valeur que vous souhaitez conserver.

Essayez ceci, cela résoudra votre problème.

var temp = {};

this.languagePack.forEach(({key,value}) => {
    temp[key] = value
})

console.log(temp)

Note: Ici, nous n'utilisons pas map car nous voulons retourner un objet et non un tableau. Nous pouvons donc utiliser reduce fonction de reduce ici pour le faire, mais j’ai pensé que ce serait simple et facile à comprendre ce que nous voulons et ce que nous faisons ici. .

J'ai un simple JSON avec un tableau qui contient d'autres objets, etc. comme ceci:

languagePack:
[
  {
    'key': 'Username',
    'value': 'Benutzername',
    'group': 'default'
  },
  {
    'key': 'Password',
    'value': 'Passwort',
    'group': 'default'
  }
]

Mais ce que je veux vraiment, c'est un objet comme celui-ci:

languagePack: 
{
    'Username': 'Benutzername',
    'Password': 'Passwort'
}

Donc, je veux réduire le tableau à de simples paires clé-valeur qui sont à l'intérieur d'un tableau ou même d'un objet (les clés sont uniques). Quelqu'un at-il une idée de la façon de réduire cela avec certaines de ces fonctions de tableaux sympas? Je ne pensais que créer un objet pour chacun et construire l'objet "à la main" pour un bien, mais je me souviens qu'il y avait des choses sympas pour un tableau comme "réduire", l'opérateur de diffusion (...), la carte, tous, certains, etc.

Je l'ai essayé avec quelque chose comme:

var temp = this.languagePack.map(([key, value]) => ({key,value}))
console.log(temp)

Mais cela ne m'a TypeError: Invalid attempt to destructure non-iterable instance qu'un message d'erreur TypeError: Invalid attempt to destructure non-iterable instance

Edit: Les trois réponses fonctionnent parfaitement bien. Merci.


Vous pouvez utiliser ES6 Map pour cela. Utilisez Object.fromEntries pour reconvertir la map en Object .

Pour plus d'informations sur Map

let languagePack=
[{
  'key': 'Username',
  'value': 'Benutzername',
  'group': 'default'
},
{
  'key': 'Password',
  'value': 'Passwort',
  'group': 'default'
}];

let map = new Map();

languagePack.forEach((val)=>{
  map.set(val.key, val.value);
})
languagePack = Object.fromEntries(map);
console.log(languagePack);


utiliser avec Array#map sa crée la clé et la valeur en tant qu'objet et Object.assign une valeur de tableau caché en objet

const languagePack = [ { 'key': 'Username', 'value': 'Benutzername', 'group': 'default' }, { 'key': 'Password', 'value': 'Passwort', 'group': 'default' } ];

var res = Object.assign({},...languagePack.map(({key,value}) => ({[key]:value})))

console.log(res)





arrays