Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

206
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda