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

207
Vistas
Cómo eliminar un objeto si el objeto coincide

Estoy tratando de eliminar el objeto si el objeto coincide, no quiero comparar ninguna clave de objeto, solo quiero comparar el objeto completo con la matriz del objeto, y si coincide, entonces tengo que eliminar ese objeto de la matriz original.

 let originalArray = [ {name: 'abc', country: 'eng'}, {name: 'xyz', country: 'ind'}, {name: 'pqr', country: 'us'} ] let objectToBeRemove = [ {name: 'pqr', country: 'us'} ] console.log(originalArray);

Rendimiento esperado:

 [ {name: 'abc', country: 'eng'}, {name: 'xyz', country: 'ind'} ]

No puedo descifrar cómo puedo comparar objetos, puedo hacerlo por id o cualquier clave, pero estoy haciendo algo genérico, por lo que en algunos casos puede que la ID no esté presente, por eso quiero comparar objetos.

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

0

Una forma es usar Array#filter con Array#some + JSON.stringify() para comparar.

Tenga en cuenta que Array#filter devuelve una nueva matriz. Entonces la variable necesita ser reasignada.

 let originalArray = [ {name: 'abc', country: 'eng'}, {name: 'xyz', country: 'ind'}, {name: 'pqr', country: 'us'} ]; let objectToBeRemove = [ {name: 'pqr', country: 'us'} ]; originalArray = originalArray.filter(obj => objectToBeRemove.some(objToRemove => JSON.stringify(objToRemove) !== JSON.stringify(obj) ) ); console.log(originalArray);

Nota: En mi opinión, usar JSON.stringify() es un poco primitivo para la comparación de objetos. Por ejemplo, la verificación fallaría si las propiedades están en un orden diferente {country: 'us', name: 'pqr'} . Mejor manera sería hacer una comparación profunda. Por ej. usando _.isEqual de la biblioteca loadash . Vea aquí para más información.

Usando loadash

 let originalArray = [ {name: 'abc', country: 'eng'}, {name: 'xyz', country: 'ind'}, {name: 'pqr', country: 'us'} ]; let objectToBeRemove = [ {country: 'us', name: 'pqr'} ]; originalArray = originalArray.filter(obj => objectToBeRemove.some(objToRemove => !_.isEqual(objToRemove, obj) ) ); console.log(originalArray);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar la función "filtro" para hacerlo: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

 var myArr = [{name: "toto"}, {name: "tata"}, {name: "tutu"}]; var toRemove = {name: "tata"}; let ret = myArr.filter(function(el) { return el.name != toRemove.name; });

O para eliminar varios elementos:

 var myArr = [{name: "toto"}, {name: "tata"}, {name: "tutu"}]; var toRemove = [{name: "tata"}, {name: "tutu"}]; for (var i = 0; i < toRemove.length; i++) { let index = myArr.findIndex((el) => { // Search item index to remove return el.name == toRemove[i].name; }); if (index != -1) myArr.splice(index, 1); // Remove item in found index }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Para comparar la igualdad del objeto completo, puede usar el método JSON.stringify() .

Ejemplo;

 JSON.stringfy(originalArray[i]) === JSON.stringfy(objectToBeRemove)
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