Existe-t-il un moyen plus simple dans lodash pour atteindre les objectifs suivants,
var o = _.reduce([2, 3, 7], function(acc, v, i) {
acc[v] = i || "0";
return acc;
}, {});
Résultat,
Object {2: "0", 3: 1, 7: 2}
3 réponses
Depuis que tu as dit que tu voulais utiliser lodash
_.fromPairs(_.map(array, (elt, i) => [elt, String(i)]))
Cela fonctionne en transformant le tableau en un tableau de paires clé / valeur, que vous pouvez ensuite utiliser _.fromPairs
pour transformer en objet.
Je ne le recommande pas vraiment, mais un monoplace utilisant ES6:
Object.assign({}, ...array.map((e, i) => ({[e]: String(i)})))
Cela fonctionne en créant un tas de petits objets à une propriété, puis en les répartissant sur la liste des paramètres de Object.assign
qui les collera ensemble en un seul objet pour vous.
Essayez d'utiliser .reduce()
avec une valeur de départ de empty object
,
var obj = [2, 3, 7].reduce(function(a,b,i){
return (a[b] = i, a);
}, {});
Si vous voulez qu'il soit encore plus court, utilisez la version E6,
var obj = [2, 3, 7].reduce((a,b,i) => (a[b] = i, a), {});
Une solution Javascript pure est
var obj = {}
[2, 3, 7].forEach(function(val, i) { obj[val] = i })
Obj est alors
Object {2: 0, 3: 1, 7: 2}
Pensez que c'est relativement simple et a une bonne lisibilité. Ce n'est pas complètement le même, car il n'a pas renvoyé la valeur, mais enregistrez-le dans la référence obj.
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.