[英]JSON.stringify of an array returns a number after pushing more than one object [duplicate]
我正在尝试使用 localStorage 将产品添加到我网站的购物车中,因此我初始化了一个数组,然后将产品推入其中。 问题是当我使用 JSON.parse() 推送产品然后使用 JSON.stringify() 再次对其进行字符串化时,它返回一个数字而不是数组。 这是我的代码中引发错误的部分:
let product = { id: i + 1, name: productNames[i].innerText, price: prices[i].innerHTML, img: imgs[i].src }; if(localStorage.productsInCart) { let productsInLocalStorage = JSON.parse(localStorage.getItem("productsInCart") || "[]"); console.log(productsInLocalStorage); let newArray = productsInLocalStorage.push(product); console.log(JSON.stringify(newArray)); localStorage.productsInCart = JSON.stringify(newArray); numberOfProducts.innerHTML = parseInt(numberOfProducts.innerHTML, 10) + 1; } else { let productToStore = JSON.stringify([product]); localStorage.setItem("productsInCart", productToStore); numberOfProducts.style.display = "block"; numberOfProducts.innerHTML = 1; };
然后在控制台中:在此处输入图像描述
圆圈 2 是 JSON.stringify 的 console.log()。 我一直在寻找有关此的详细信息,但似乎没有任何效果。
问题在于这一行:
let newArray = productsInLocalStorage.push(product);
来自MDN Docs : push() 方法将一个或多个元素添加到数组的末尾并返回数组的新长度。 (强调我的)
您将数组的长度分配给 newArray。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.