Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
¿Cómo obtener cambios entre 2 matrices de objetos? [lodash/JS]

Ya tengo una tabla poblada con un conjunto de datos de la API. Para la demostración, digamos que ya he agregado 2 filas en la tabla que obtuve de la API. Ahora, edité la segunda fila y también agregué otra fila. Entonces, lo que quiero lograr es obtener una nueva matriz de objetos que tengan la fila que acabo de editar junto con la fila que acabo de agregar.

Las siguientes son las 2 matrices con conjuntos de datos ficticios que tengo.

Primera matriz:

 [ { id: '38sj3-23', user: { id: 21323 }, count: { start: 12, end: 24 }, point: 56 }, { id: '38sj3-23', user: { id: 21323 }, count: { start: 8, end: 36 }, point: 49 }, ]

Segunda matriz:

 [ { id: '38sj3-23', user: { id: 21323 }, count: { start: 12, end: 24 }, point: 56 }, { id: '38sj3-23', user: { id: 21323 }, count: { start: 36, end: 97 }, point: 15 }, { id: null, count: { start: 123, end: 2135 }, point: 323 }, ]

Observe que edité los valores de la segunda fila en Second Array . La tercera fila en la segunda matriz no tiene identificación de usuario porque la identificación de userId se devolverá del servidor después de publicarla

Rendimiento esperado:

 [ { id: '38sj3-23', user: { id: 21323 }, count: { start: 36, end: 97 }, point: 15 }, { id: null, count: { start: 123, end: 2135 }, point: 323 }, ]

lodash _.differencWith / _.intersectWith pero la salida usando eso fue así a continuación

 [ { id: null, count: { start: 123, end: 2135 }, point: 323 }, ]

Solo devolví la fila recién agregada en la tabla, pero ignoré que también cambié los valores en la segunda fila.

NOTA : La tabla tiene solo 3 columnas donde todas ellas son editables. coun: { start, end} y point

about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

Puede usar _.differenceWith ( https://lodash.com/docs/4.17.15#differenceWith )

 const first=[ { id: '38sj3-23', user: { id: 21323 }, count: { start: 12, end: 24 }, point: 56 }, { id: '38sj3-23', user: { id: 21323 }, count: { start: 8, end: 36 }, point: 49 }, ] const second=[ { id: '38sj3-23', user: { id: 21323 }, count: { start: 12, end: 24 }, point: 56 }, { id: '38sj3-23', user: { id: 21323 }, count: { start: 36, end: 97 }, point: 15 }, { id: null, count: { start: 123, end: 2135 }, point: 323 }, ] let result=_.differenceWith(second, first, _.isEqual) console.log(result)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

_.differenceWith :

Este método es como _.difference excepto que acepta comparador que se invoca para comparar elementos de matriz con valores. El orden y las referencias de los valores de los resultados están determinados por la primera matriz. El comparador se invoca con dos argumentos: (arrVal, othVal) .

about 4 years ago · Santiago Gelvez Denunciar

0

 const a = [ { id: '38sj3-23', user: { id: 21323 }, count: { start: 12, end: 24 }, point: 56 }, { id: '38sj3-23', user: { id: 21323 }, count: { start: 8, end: 36 }, point: 49 }, ] const b = [ { id: '38sj3-23', user: { id: 21323 }, count: { start: 12, end: 24 }, point: 56 }, { id: '38sj3-23', user: { id: 21323 }, count: { start: 36, end: 97 }, point: 15 }, { id: null, count: { start: 123, end: 2135 }, point: 323 }, ]; result = _.differenceWith(b, a, _.isEqual) console.log(result); // your excpected result.
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda