如何创建一个包含来自本地存储对象的多个元素的数组

How to creat an array that includes multiples elements from an object from the local Storage

我想创建一个数组,其中包含我的购物网站购物车的本地存储对象中的每个产品 ID。问题是我为每个产品的 ID 生成一个数组而不是一个包含所有产品 ID 的数组的函数

 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
       });

我已经尝试了几个小时,但似乎没有任何效果,我猜我必须使用 forEach(),但我做不到?

在循环外创建变量,并将值推入此数组。

 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

您正在 let cartIds 循环内定义。它在每个循环中被创建和重新创建。所以,当然,它只包含一个元素。将其定义在循环外,并在循环中将内容推入其中。

const cartStorage = JSON.parse(localStorage.getItem("cart"));
let cartIds = [];
cartStorage.forEach(cart => cartIds.push(cart._id));
console.log(cartIds);

甚至更好:

const cartStorage = JSON.parse(localStorage.getItem("cart"));
const cartIds = cartStorage.map(cart => cart._id);
console.log(cartIds);

另外请注意,如果您的 localStorage 中没有“购物车”,getItem 将 return null,您的代码将会崩溃。你需要处理这种情况。