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

131
Visualizações
Quiero eliminar la matriz cuyo precio es 0

tengo una matriz ingrese la descripción de la imagen aquí Quiero borrar el precio cuando sea = 0

¿Por qué cuando quiero eliminar la matriz cuyo precio es 0 no elimina toda la matriz?

¿Dónde está el problema?

 var products = [{ specs: "name", shopLink: "linamazon", shopLogoUrl: "icon Store/Amazon22.png", price: 0, priceUpdate: "Amazon.com", storeName: "Amazon" }, { specs: "name", shopLink: "linknewegg", shopLogoUrl: "icon Store/NewEgg.png", price: 0, priceUpdate: "NewEgg.com", storeName: "NewEgg" }, { specs: "name", shopLink: "linknoon", shopLogoUrl: "icon Store/noon-logo2.png", price: 0, priceUpdate: "icon Store/Noon.com", storeName: "Noon" }, { specs: "name", shopLink: "linkebay", shopLogoUrl: "icon Store/ebay33.png", price: 0, priceUpdate: "Ebay.com", storeName: "Ebay" }, ]; for (i = 0; i < products.length; i++) { if (products[i].price == 0) { products.splice(i, 1) } } console.log(products)
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Está modificando la matriz en medio de un bucle. Esto hace que la matriz se reduzca, por lo i ahora me refiero a un elemento diferente. Cuando i incrementa, terminas omitiendo un valor. Una posible solución es cambiar i al mismo tiempo que modifica la matriz:

 for (i = 0; i < products.length; i++) { if (products[i].price == 0 ) { products.splice(i, 1) i -= 1; // <--------------- added } }

O puede considerar usar otro enfoque, como el método .filter en matrices:

 products = products.filter(product => product.price !== 0);
about 4 years ago · Juan Pablo Isaza Relatório

0

Intenta usar algo como:

 const arr = products.filter(x => x.price > 0);

Incluso puede agregar conversión a Number();

about 4 years ago · Juan Pablo Isaza Relatório

0

El problema es lo que dijeron @epascarello y @dm en los comentarios, eliminarlos cambiará el índice de elementos en la matriz , por lo que su ciclo perderá algunos de ellos.

Y la respuesta estándar es lo que dijo @aayoub-el-aboussi

Pero si desea mantener el for loop for para un better performance , solo tiene que invertir el ciclo , lo que significa intentar contar de principio a fin. Como el ejemplo:

Cómo eliminar algunos elementos en la matriz (sin faltar) usando for loops

 var products = [{ specs: "name", shopLink: "linamazon", shopLogoUrl: "icon Store/Amazon22.png", price: 0, priceUpdate: "Amazon.com", storeName: "Amazon" }, { specs: "name", shopLink: "linknewegg", shopLogoUrl: "icon Store/NewEgg.png", price: 0, priceUpdate: "NewEgg.com", storeName: "NewEgg" }, { specs: "name", shopLink: "linknoon", shopLogoUrl: "icon Store/noon-logo2.png", price: 0, priceUpdate: "icon Store/Noon.com", storeName: "Noon" }, { specs: "name", shopLink: "linkebay", shopLogoUrl: "icon Store/ebay33.png", price: 0, priceUpdate: "Ebay.com", storeName: "Ebay" }, ]; for (i = products.length-1; i >=0; i--) { if (products[i].price == 0) { products.splice(i, 1) } } console.log(products)

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