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

138
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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