我确定这很简单,但是到目前为止我的搜索还没有帮助。
当我将一个数组推入另一个数组时,它们嵌套的层次更深。第一个数组位于正确的深度。
var productArray = [{productID: currentProduct, productPrice: currentPrice, productName: productName, options: myOptions}];
if(localStorage.getItem("cart")){
var existingArray = JSON.parse(localStorage.getItem("cart"));
existingArray.push(productArray);
localStorage.setItem("cart", JSON.stringify(existingArray));
} else {
localStorage.setItem("cart", JSON.stringify(productArray));
}
结果:
0: Object { productID: "1", productPrice: "2.00", productName: "Chicken Sandwich", … }
1: 0: Object { productID: "1", productPrice: "2.00", productName: "Chicken Sandwich", … }
2: 0: Object { productID: "1", productPrice: "2.00", productName: "Chicken Sandwich", … }
答案 0 :(得分:0)
您有多个选项来连接两个数组,但不是b"\x00\x00\x08`\x00\x00\vÝ\x00\x00\x13±\x00\x00#\x0E\x00\x00-’\x00\x00FÊ\x00\x00H\x1F\x00\x00^\x06\x00\x00bF\x00\x00h²"
(除非您迭代第二个数组并分别推送每个元素,否则用.push
跟进)
.flat()
答案 1 :(得分:0)
由于 productArray 是一个数组,而不是一个对象,将其推入另一个数组将创建另一个数组,该数组将包含初始数组和新数组一个。
要执行预期的操作,应声明一个新对象,然后将 it 推入现有数组。
var productObject = {productID: 1, productPrice: 1, productName: '', options:{}};
var productArray = [];
if(localStorage.getItem("cart")){
var existingArray = JSON.parse(localStorage.getItem("cart"));
existingArray.push(productObject );
localStorage.setItem("cart", JSON.stringify(existingArray));
} else {
productArray.push(productObject);
localStorage.setItem("cart", JSON.stringify(productArray));
}
答案 2 :(得分:0)
我认为您正在将整个“ productArray”添加到“ existingArray”的位置n中。尝试做这个。
var productArray = [{productID: currentProduct, productPrice: currentPrice, productName: productName, options: myOptions}];
if(localStorage.getItem("cart")){
var existingArray = JSON.parse(localStorage.getItem("cart"));
productArray.forEach(function(val){
existingArray.push(val);
})
localStorage.setItem("cart", JSON.stringify(existingArray));
} else {
localStorage.setItem("cart", JSON.stringify(productArray));
}