Je voudrais transformer le tableau suivant en un objet légèrement modifié (voir ci-dessous). J'essaie aussi de m'entraîner en utilisant l'opérateur de propagation, mais je n'ai pas réussi à comprendre comment le faire. J'essaie d'éviter d'utiliser lodash (à des fins éducatives).Mapper le tableau à l'objet en utilisant la propagation
tableau de départ:
var arr = [
{ mainkey: 'John', val1: 'ABC', val2: '..', val3: '..' },
{ mainkey: 'Mary', val1: 'DEF', val2: '..', val3: '..' },
{ mainkey: 'Ann', val1: 'XYZ', val2: '..', val3: '..' }
];
pour objet final:
newObj = {
John: {val1: 'ABC', val2: '..', val3: '..' },
Mary: {val1: 'DEF', val2: '..', val3: '..' },
Ann: {val1: 'XYZ', val2: '..', val3: '..' }
}
Sans utiliser l'opérateur de diffusion, cela devient proche, mais pas là où je dois être:
var result = arr.reduce(function(map, obj) {
map[obj.mainkey] = obj.val1;
// map[obj.mainkey] = { obj.val1, obj.val2 }; <-- DOESNT WORK
return map;
}, {});
Avec l'opérateur de propagation tout ce que je fais échoue.
Autres messages avec un contenu utile:
- React object spread (ES6) returned from map
- Convert object array to hash map, indexed by an attribute value of the Object
Merci pour l'explication avec elle @guy, qui aide beaucoup (d'autant plus que je cherchais ce à des fins éducatives, même si elle est nécessaire pour mon application aussi bien) –