Me gustaría crear una matriz que incluya las identificaciones de todos los productos del objeto de almacenamiento local del carrito de mi sitio web de compras. La cuestión es que la función que hice genera una matriz para la identificación de cada producto en lugar de una matriz con toda la identificación del producto.
var cartStorage = JSON.parse(localStorage.getItem("cart")); cartStorage.forEach(function (cart, index) { let cartIds = [cart._id]; console.log(cartIds); // logs one array for each id instead of just one array with every id's });Lo he estado intentando durante horas pero nada parece funcionar, supongo que tengo que usar un forEach() pero no puedo hacer que funcione.
Está definiendo let cartIds dentro del ciclo. Se crea y recrea en cada bucle. Entonces, por supuesto, contiene solo un elemento. Defínelo fuera del ciclo, y en el ciclo, inserta cosas en él.
const cartStorage = JSON.parse(localStorage.getItem("cart")); let cartIds = []; cartStorage.forEach(cart => cartIds.push(cart._id)); console.log(cartIds);O mejor :
const cartStorage = JSON.parse(localStorage.getItem("cart")); const cartIds = cartStorage.map(cart => cart._id); console.log(cartIds); Además, tenga en cuenta que, si no tiene un "carrito" en su localStorage, getItem devolverá null y su código fallará. Tienes que encargarte de este caso.
Cree la variable fuera del ciclo e inserte los valores en esta matriz.
var cartIds = [] var cartStorage = JSON.parse(localStorage.getItem("cart")); cartStorage.forEach(function (cart, index) { cartIds.push(cart._id) }); console.log(cartIds) // this has all the pushed values inside