La guía o código que verás en este artículo es la solución más eficiente y efectiva que encontramos a esta inquietud o dilema.
Solución:
Una actualización de esto (en términos de las últimas capacidades de JavaScript) que evita variables definidas no deseadas:
let v;
var obj =
"a": (v = 'some value'),
"b": v,
"c": v
;
esto significará v
no se definirá fuera del bloque, pero obj
estarán.
respuesta original
Otra forma de hacer lo mismo es:
var v;
var obj =
"a": (v = 'some value'),
"b": v,
"c": v
;
Puede establecer una línea de igualdad entre varias propiedades:
var foo = ;
foo.a = foo.b = foo.c = "Hello";
O simplemente podría crear un método que haga la asignación masiva por usted:
var foo =
setValue: function( props, value )
while ( props.length ) this[ props.pop() ] = value;
foo.setValue( [ "a", "b", "c" ] , "Foo" );
Podrías probar esto. No es el azúcar sintáctico lo que está buscando (p. a,b,c:1, d:2
) pero es otra forma de hacerlo, aunque todas estas respuestas están bastante bien.
(object,fields,value)=>Object.assign(object||, ...fields.map(f=>([f]:value) ))
Explicación:
(object,fields,value)=>
Toma un objeto (o un valor falso si desea un objeto nuevo, siéntase libre de reorganizar el orden de los argumentos)
Object.assign(object||,
Devolverá un objeto basado en object
y mutará el objeto. Para deshabilitar esto, simplemente agregue un objeto literal de primer argumento como este Object.assign(, object || , ...
...fields.map(f=>([f]:value) )
difundirá la array de campos asignados a objetos como una lista de argumentos adicionales para Object.assign
. ['a','b'].map(f=>([f]:value) )
daré [a:value, b:value]
y f(...[a:1,b:1])
es como f(a:1,b:1)
. Object.assign
hace el resto 🙂
Tienes la opción de añadir valor a nuestra información contribuyendo tu experiencia en las explicaciones.