web-dev-qa-db-fra.com

Ajouter de nouvelles propriétés d'objet dans lodash

J'ai deux objets et je veux ajouter des propriétés de l'objet A à l'objet B et j'essaie avec extend qui ne fonctionne pas, dois-je utiliser quelque chose de différent?

a = {
name = "value"
name2 = "value2"
}

b = {
name3 = "value"
name4 = "value2"
}

Je veux que A contienne les deux

a = {
name = "value"
name2 = "value2"
name3 = "value"
name4 = "value2"
}
14
shopia T

_.extend (maintenant appelé _.assign ) est en effet la façon dont vous faites cela:

_.assign(a, b);

Exemple en direct :

var a = {
name: "value",
name2: "value2"
};

var b = {
name3: "value",
name4: "value2"
};

_.assign(a, b);
document.body.insertAdjacentHTML(
  "beforeend",
  "Result:<pre>" + JSON.stringify(a, null, 2) + "</pre>"
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"></script>
27
T.J. Crowder

Tout d'abord, vos objets définis sont incorrects. Les objets doivent être écrits sous forme de paires name:value, Séparés par un deux-points (et non par un signe d'égalité). De plus, vous devez utiliser des séparateurs de virgules pour délimiter les propriétés de l'objet, comme:

var person = {
    firstName: "Matthias",
    lastName: "Eckhart",
    eyeColor: "blue"
};

Pour étendre un objet avec différentes propriétés via lodash , vous pouvez utiliser _.assign(object, [sources], [customizer], [thisArg]) :

var a = {
  name: "value",
  name2: "value2"
};

var b = {
  name3: "value",
  name4: "value2"
};

_.assign(a, b); // extend

console.log(a);
<script src="https://raw.githubusercontent.com/lodash/lodash/3.10.1/lodash.min.js"></script>
6
Matthias A. Eckhart

Je pense que vous souhaitez utiliser la fonction lodash merge, plutôt que extend. Voir: Lodash - différence entre .extend ()/.assign () et .merge ()

3
jwkicklighter