sessionStorage 将所有内容存储在同一个数组中

sessionStorage is storing everything inside the same array

我有这段JS:

$('.go-to-bag').click(function () {
var productId = $(this).parent().attr('id');
var productName = $(this).parent().attr('product-name');
var productQty = $(this).prev().val();
var productLWeight = $(this).parent().attr('product-weight');
var productPrice = $(this).parent().attr('product-price');

    var newList = new Object(); 

    if(sessionStorage.newShoppingList) 
    {
        newShoppingList = JSON.parse(sessionStorage.getItem('newShoppingList'));
    } else {
        newShoppingList = []
    }

    newShoppingList.push(productId, productName, productQty, productPrice, productLWeight);

    sessionStorage.setItem('newShoppingList', JSON.stringify(newShoppingList));

    var retrievedObject = sessionStorage.getItem('newShoppingList'); 
    console.log('retrievedObject: ', JSON.parse(retrievedObject));

});

它应该向 sessionStorage 中的对象添加项目,如下所示: 相反,它给出了这个:

它工作得很好,但知道它不起作用。 唯一的区别是我的同事在主文件的 php 中实现了语言功能。

有人有什么建议吗?

您正在调用函数 Array.prototype.push 传递 5 个参数,这些参数将单独插入到该数组中。

Array.prototype.push

你需要用大括号括起来

                     v
newShoppingList.push({
     productId,
     productName,
     productQty,
     productPrice,
     productLWeight
});
^

上面的代码将添加一个对象如下:

{
  "productId": 29,
  "productName": "Chocolote negro",
  "productQty": 1,
  "productPrice": "0.0",
  "productLWeight": "0.00"
}