Exemple:
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}]
var newArr = _.enhance(arr, { married : false });
console.log(newArr); // [{name: 'a', age: 23, married : false}, {name: 'b', age: 24, married : false}]
Je cherche quelque chose pour faire ça. Remarque, améliorer n'est pas présent dans lodash. Est-il possible de le faire avec lodash?
Sinon - ajout possible?
Merci,
Vous voulez probablement extend
each
de vos objets.
mu est trop court pour tuer mon jeu de mots tout en faisant un excellent point. Mis à jour pour créer un tout nouveau tableau.
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
var newArr = _.map(arr, function(element) {
return _.extend({}, element, {married: false});
});
Si vous souhaitez l'ajouter à la bibliothèque,
_.enhance = function(list, source) {
return _.map(list, function(element) { return _.extend({}, element, source); });
}
J'utilise la syntaxe ES6. Je pense que cela vous aidera.
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
arr.map((element) => {
return element.married = false;
});
console.log(arr); // [{name: 'a', age: 23, married : false}, {name: 'b', age: 24, married : false}]
En utilisant lodash et la notation fléchée ES6, la solution peut devenir assez courte:
const newArr = _.map(arr, o => _.extend({married: false}, o));
Remarque: j'utilise l'objet {married: false}
comme premier argument depuis la mutation de cet objet laisse le tableau d'origine intact. Cela signifie cependant que married
devient le premier champ de l'objet résultant, mais cela n'est probablement pas pertinent.
const arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
const newArr = arr.map(el => ({ ...el, ...{married: false} }));
console.log(newArr);
// [{age: 23, married: false, name: 'a'}, {age: 24, married: false, name: 'b'}]
Remarque: les fonctions fléchées qui conservent un objet littéral doivent envelopper l'objet entre parenthèses, par exemple, () => ({})
La fonction lodash la plus proche de ce que vous voulez est la fusion: http://lodash.com/docs#merge
La seule légère différence entre le fonctionnement de la fusion et ce que vous voulez faire est que vous devez avoir un tableau de longueur égale pour arranger tout ce qui ressemble:
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
var marriedArr = [{married : false}, {married : false}];
var newArr = _.merge(arr, marriedArr);
console.log(newArr);
Si vous essayez de faire:
var newArr = _.merge(arr, {married : false});
La fusion fonctionnera alors comme concat.