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

203
Visualizações
Cómo buscar una matriz de objetos y evitar empujar una nueva fila si el valor existe más de un Angular 8

Al hacer clic en el botón AddMore, estoy presionando el objeto newData en oldData , pero antes de presionar, necesito verificar la condición a continuación.

Quiero verificar si los valores de las columnas productType , processTechType , familyMake y lineId existen más de una vez en la matriz oldData , entonces arrojará un error.

A continuación mis datos:

 const newData = {"processTypeId":0,"productType":"Savoury","processTechType":"Mustard","familyMake":["Jelly","Noodles"],"lineId":["R_X002_ACCESS","R_X002_BIB"],"batchSize":"4"} const oldData = [ {"processTypeId":0,"productType":"Savoury","processTechType":"Mustard","familyMake":["Jelly","Noodles"],"lineId":["R_X002_ACCESS","R_X002_BIB"],"batchSize":"1"}, {"processTypeId":0,"productType":"Savoury","processTechType":"Mustard","familyMake":["Jelly","Noodles"],"lineId":["R_X002_ACCESS","R_X002_BIB"],"batchSize":"4"} ];

Hice el siguiente código y funciona perfectamente, pero mi código está comparando el objeto completo con la matriz oldData , pero quiero verificar solo 4 columnas del objeto newData con la matriz oldData .

¿Alguien puede ayudarme a hacer esto?

 addNewType(rowdata) { const newData = JSON.stringify(rowdata.value); const oldData = JSON.stringify(this.items.value); if ((oldData.split(newData).length - 1) >= 2) { console.log("Item exist"); } else { this.isRowExist = false; this.addItem(this.createItem(null)); } }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

puedes hacerlo así:

 addNewType(newData) { let isDuplicate = false; for(let data of this.oldData){ if(data.productType == newData.productType || data.processTechType == newData.processTechType || data.familyMake == newData.familyMake || data.lineId == newData.lineId){ isDuplicate = true; break; } } if(isDuplicate){ // Do nothing }else{ this.oldData.push(newData); } }
about 4 years ago · Juan Pablo Isaza Relatório

0

Usando una búsqueda (*):

 addNewType(newData) { const el=this.oldData.find(data=> data.productType == newData.productType || data.processTechType == newData.processTechType || data.familyMake.join('|') == newData.familyMake.join('|')) || data.lineId == newData.lineId) if (!el) { this.oldData.push(newData) } }

(*) Ver que usar un "si" es como un "bucle normal". La función devuelve "indefinido" si no se encuentra, por lo que usamos la comparación if (!el){...}

NOTA 1: cuando necesitamos comparar dos matrices, necesitamos comparar el "valor" de las matrices. Esta es la razón por la que uso "join" -que devuelve una cadena-, así que comparo las dos cadenas.

Actualizar usando filtro

 addNewType(newData) { const elements = this.oldData.filter(data=>data.productType == newData.productType || data.processTechType == newData.processTechType || data.familyMake.join('|') == newData.familyMake.join('|') || data.lineId == newData.lineId) if (elements.length <= 0) { this.oldData.push(newData) } else { // add check here in case of already existance console.log("already exists " + elements.length + " elements equals"); } }

NOTA2: la comparación dice que si una de las propiedades es igual. Si necesita que todas las propiedades sean iguales, use && en su lugar ||

** corrección de errores de sintaxis en la segunda muestra de código

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