Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

205
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!