Saltar al contenido

¿Se pueden establecer varias propiedades dentro de un objeto literal con el mismo valor?

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 objecty 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *