Supongamos que tengo un objeto ( baz ) de contenido variable. ¿Cómo puedo asignar un subobjeto ( foo ) con una clave ( baz ) a ese objeto en una línea?
Ejemplos:
var baz = {} baz.foo.bar = 1; console.assert(baz === { foo: { bar: 1 } }); (o, en el caso de que foo ya esté definido)
var baz = { foo: { 1: "b" } }; baz.foo.bar = 1; console.assert(baz === { foo: { 1: "b", bar: 2 } });Es posible poner todo en una línea, aunque personalmente no lo recomendaría. Técnicamente estás haciendo dos cosas bastante diferentes:
Puede asignar baz.foo o el objeto vacío a baz.foo y luego asignar el valor de la propiedad de la bar al objeto resultante:
const baz = {}; (baz.foo ??= {}).bar = 1; console.log(baz.foo.bar); const baz2 = {}; (baz2.foo ??= {}).bar = 1; console.log(baz2.foo.bar);preferiría
// Create the object if it doesn't exist yet baz.foo ??= {}; // Assign the new nested value baz.foo.bar = 1;La legibilidad del código es más importante que jugar al golf en la mayoría de los casos.
Para el primer caso:
baz.foo = {bar :1}
Y tu código funciona para el segundo caso.
(Tenga en cuenta que el siguiente código genera falso:
a = {b:1} console.log(a==={b:1}))