2

Dire que j'ai un objet tel quePuis-je ajouter deux paires de valeurs-clés à un objet JavaScript en tant que littéraux sur une ligne?

var obj = { 
    foo: 1, 
    bar: 2 
} 

Et je veux ajouter quelques touches sans faire une boucle, quelque chose sémantiquement comme ceci:

obj += { baz: 3, fred: 4 } 

Est-ce possible en utilisant une fonction JS existante ? Je voudrais le faire dans un chaînage de style fonctionnel.

+1

vous voulez 'Object.assign' dans les navigateurs modernes –

+1

' Object.assign (obj, {baz: 3, fred: 4}); ' – 4castle

+0

Note: pour les anciens navigateurs, (Internet exploseur) il y a un [Polyfill] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill) –

Répondre

3

Vérifiez si compatibility est une préoccupation avant de le faire, mais objectera destructuring à la rescousse:

var obj = { 
    foo: 1, 
    bar: 2 
} 

obj = {...obj, baz: 3, fred: 4} 

Ce qui suit est pas possible, mais on peut rêver:

obj ...= {beef: 5} 
+1

Object.assign est plus "exploseur internet une fois que vous utilisez un polyfill" amical - alors , ce code devrait être transpilé - ne pas critiquer, juste une pensée –

+0

oui, je vais ajouter un lien vers caniuse.com pour cela – Isaac

1

Et juste après avoir publié mon Googling est devenu un succès!

Apparemment, Object.assign est arrivé avec ES6 et je suis vraiment à la recherche de réponses JS modernes.

var obj = { 
    foo: 1, 
    bar: 2 
} 

obj = Object.assign(obj, {baz:3, fred:4}) 
+1

Si vous êtes intéressé par la création d'un objet sans mutation (pas toujours important), essayez 'let newObj = Object.assign ({}, obj, {baz: 3, fred: 4}); 'ou si cela ne vous dérange pas de vous déplacer ou si vous utilisez stable [node] (htt p: //node.green/) vous pouvez aussi développer/déstructurer 'obj = {... obj, baz: 3, fred: 4};' –