window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Tres puntos útiles: el resto y la dispersión en JavaScript - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2019-11-25
Desarrollo de software

Tres puntos útiles: el resto y la dispersión en JavaScript

Lukasz Kolko

ECMAScript 2015 nos trajo muchas novedades, que se tradujeron en un gran número de mejoras. Hoy vamos a echar un vistazo más de cerca a dos características que nos hacen la vida más fácil. Conoce los parámetros de reposo y la sintaxis de propagación.

Parámetros de descanso

La sintaxis resto nos permite representar un número indefinido de argumentos como un array. Echa un vistazo a una función que suma todos los argumentos pasados.

const suma = (...args) => args.reduce((prev, current) => prev + current);

console.log(suma(1, 2)); // 3
console.log(suma(1, 2, 3)); // 6

Sintaxis de propagación

El operador spread nos permite expandir objetos iterables en elementos individuales. Esta funcionalidad es opuesta a la que conseguimos con los parámetros restantes. Se puede aplicar a todos los iterables, como arrays, objetos, conjuntos, mapas, etc.

const suma = (x, y, z) => x + y + z;
const números = [1, 2, 3];

console.log(suma(...números)); // 6

Tres puntos en casos reales

Copiar una matriz

La sintaxis spread va efectivamente un nivel más profundo al copiar un array. Un nivel significa que se copia el primer nivel de referencias.

const array0 = [1, [2, 3]];
const array1 = [...array0];

console.log(array1); // [1, [2, 3]]

Crear una matriz de elementos únicos

Crea el Conjunto que almacena sólo elementos únicos y conviértelo de nuevo en un array.

const array = [1, 1, 2, 3];
const uniqueElements = [...new Set(array)];

console.log(uniqueElements); // [1, 2, 3]

Concatenar matrices

const array0 = [1, 2];
const array1 = [3, 4];
const concated = [...array0, ...array1];

console.log(concated); // [1, 2, 3, 4]

Cortar una matriz

const [primerElemento, ...nuevaMatriz] = [1, 2, 3, 4];

console.log(primerElemento); // 1
console.log(nuevaMatriz); // [2, 3, 4]

También podemos eliminar n primeros elementos con coma.

const [, , , ...nuevaMatriz] = [1, 2, 3, 4];

console.log(nuevaMatriz); // [4]

Insertar una matriz al principio de otra matriz

const array0 = [4, 5, 6];
const array1 = [1, 2, 3];
const nuevaMatriz = [...matriz1, ...matriz0];

console.log(nuevaMatriz); // [ 1, 2, 3, 4, 5, 6 ]

Generar una matriz de números del 0 al n

const array = [...Array(10)].map((_, i) => i);

console.log(array); // [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

Desestructurar un objeto

const { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };

console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }

Crear una copia de un objeto

let persona = {
  nombre: 'Juan',
  edad: 25,
  cartera: {
    suma: 500,
    divisa: 'USD'
  }
};
let personaCopia = { ...persona };

console.log(personaCopia);
// {
// nombre: 'Juan
// edad: 25,
// cartera: {
// suma: 500,
// moneda: 'USD'
// }
// }

Tenga en cuenta que la copia del objeto que se crea es un objeto nuevo con todas las propiedades del objeto original pero ninguna de su información prototípica.

persona.edad = 20;

console.log(persona.edad); // 20
console.log(personaCopia.edad); // 25

Ten en cuenta que la sintaxis spread crea una copia 'superficial' del objeto, por lo que la propiedad 'wallet' sólo se copiará como referencia al subobjeto original. Para una clonación profunda puedes utilizar el método JSON stringify/parse o el método 'cloneDeep' proporcionado por Lodash dependiendo de la complejidad de tu objeto. En algunos casos este método también puede ser útil:

let personaCopia = { ...persona, cartera = {...persona.cartera}}; 

Añadir propiedades a objetos de forma condicional

Podemos añadir condicionalmente propiedades a un nuevo objeto que estamos creando haciendo uso del operador de dispersión junto con la evaluación de cortocircuito.

const colores = {
  rojo '#ff0000
  verde: '#00ff00',
  azul: '#0000ff'
};
const negro = {
  negro: '#000000'
};

let extraNegro = false
let conditionalMerge = {
  ...colores,
  ...(extraNegro ? negro : {})
};

console.log(conditionalMerge);
// {
// rojo: '#ff0000',
// verde: '#00ff00',
// azul: '#0000ff'
// }

extraNegro = true;
conditionalMerge = {
  ...colores,
  ...(extraNegro ? negro : {})
};

console.log(conditionalMerge);
// {
// rojo: '#ff0000',
// verde: '#00ff00',
// azul: '#0000ff'
// negro: '#000000'
// }

Dividir una cadena en caracteres

Esto es similar a llamar al método split con una cadena vacía como parámetro.

const split = [...'qwerty'];
console.log(split); // [ 'q', 'w', 'e', 'r', 't', 'y' ]

Consultoría de desarrollo de productos digitales

Más información:

3 Desafíos comunes del desarrollo de productos de software para startups

El mejor tipo de proyectos para Java

¿Cómo no matar un proyecto con malas prácticas de codificación?

Artículos relacionados

Desarrollo de software

Crear aplicaciones web preparadas para el futuro: ideas del equipo de expertos de The Codest

Descubra cómo The Codest destaca en la creación de aplicaciones web escalables e interactivas con tecnologías de vanguardia, ofreciendo experiencias de usuario fluidas en todas las plataformas. Descubra cómo nuestra experiencia impulsa la transformación...

EL MEJOR
Desarrollo de software

Las 10 mejores empresas de desarrollo de software de Letonia

Conozca las principales empresas de desarrollo de software de Letonia y sus innovadoras soluciones en nuestro último artículo. Descubra cómo estos líderes tecnológicos pueden ayudarle a mejorar su negocio.

thecodest
Soluciones para empresas y escalas

Fundamentos del desarrollo de software Java: Guía para externalizar con éxito

Explore esta guía esencial sobre el desarrollo de software Java outsourcing con éxito para mejorar la eficiencia, acceder a la experiencia e impulsar el éxito de los proyectos con The Codest.

thecodest
Desarrollo de software

La guía definitiva para subcontratar en Polonia

El auge de las outsourcing en Polonia está impulsado por los avances económicos, educativos y tecnológicos, que fomentan el crecimiento de las TI y un clima favorable a las empresas.

TheCodest
Soluciones para empresas y escalas

Guía completa de herramientas y técnicas de auditoría informática

Las auditorías informáticas garantizan sistemas seguros, eficientes y conformes. Obtenga más información sobre su importancia leyendo el artículo completo.

The Codest
Jakub Jakubowicz CTO y Cofundador

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

    es_ESSpanish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean nl_NLDutch etEstonian elGreek es_ESSpanish