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

144
Vistas
Angular: compare dos matrices con la misma cantidad de objetos pero con diferentes valores y devuelva la diferencia de la segunda matriz

Tengo 2 arreglos de objetos

 arrayOne = [{objectType: 'License', objectId: 333, objectName: 'Test Object 1', dataType: 'String'} {objectType: 'Owner', objectId: 334, objectName: 'Test Object 2', dataType: 'String'}, {objectType: 'Location', objectId: 335, objectName: 'Test Object 3', dataType: 'String'}] arrayTwo = [{objectType: 'LICENSE', objectId: 333, objectName: 'Test Object 1', dataType: 'String'} {objectType: 'OWNER', objectId: 334, objectName: 'Test Object 4', dataType: 'Value List'}, {objectType: 'LOCATION', objectId: 335, objectName: 'Test Object 3', dataType: 'String'}]

Como podemos ver en arrayTwo , objectName y dataType cambian. Es posible que cualquiera de las propiedades cambie, pero la cantidad de objetos siempre será la misma en ambas matrices.

Entonces, aquí, necesito extraer los objetos de arrayTwo que se ha cambiado al compararlos con arrayOne y almacenarlos en una nueva matriz, digamos resultsArray ?

Revisé las respuestas proporcionadas en Cómo obtener la diferencia entre dos matrices de objetos en JavaScript , solo habla de obtener las diferencias en función de una propiedad, no de ninguna propiedad. Por favor, sugiera esto. Gracias.

EDITAR: arrayTwo editado para tener letras mayúsculas para objectType . Necesito ignorar el caso y el resultado debe ser insensible a mayúsculas y minúsculas. Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Una opción es iterar a través de los primeros elementos de la matriz, encontrar el mismo elemento para la segunda matriz por su id y luego verificar si alguna de sus propiedades ha cambiado:

 arrayOne = [{ objectType: 'License', objectId: 333, objectName: 'Test Object 1', dataType: 'String' }, { objectType: 'Owner', objectId: 334, objectName: 'Test Object 2', dataType: 'String' }, { objectType: 'Location', objectId: 335, objectName: 'Test Object 3', dataType: 'String' } ] arrayTwo = [{ objectType: 'License', objectId: 333, objectName: 'Test Object 1', dataType: 'String' }, { objectType: 'Owner', objectId: 334, objectName: 'Test Object 4', dataType: 'Value List' }, { objectType: 'Location', objectId: 335, objectName: 'Test Object 3', dataType: 'String' } ]; const changedObjects = arrayOne.filter(obj1 => { const obj2 = arrayTwo.find(x => x.objectId === obj1.objectId); return Object.keys(obj1).some(key => String(obj1[key]).toLowerCase() !== String(obj2[key]).toLowerCase()); }); console.log(changedObjects);

EDITAR: El ejemplo anterior devolverá el elemento de arrayOne. En caso de que necesite el elemento con los nuevos valores, puede invertir arrayOne y arrayTwo dentro de la función.

about 4 years ago · Juan Pablo Isaza 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