javascript - 使用 JavaScript 创建数组并将其存储在 sessionStorage 中?

标签 javascript arrays sessionstorage

我正在做一项作业,要求我们将对象从假数据库数组添加到假购物车数组,然后转到显示“购物车”中所有内容的购物车页面。现在,一切都很好,但由于某种原因,我无法在 fakeCart 数组中显示多个对象。

相当确定问题出在这个函数中,因为在其他方面一切都显示正常。

所以,事实证明我发布了我正在修改的代码。我已经将其更新为几乎可以工作的版本。

function addToCart(e) {
'use strict';

var fakeCart = [];

for (var i = 0; i < fakeDatabase.length; i++) {
    if (fakeDatabase[i].id == e.currentTarget.id) {
        fakeCart.push(fakeDatabase[i]);
    }
}

sessionStorage.fakeCart = JSON.stringify(fakeCart);
}

本质上,我可以获得使单个对象从一个数组(数据库)转移到另一个数组(购物车)的代码,但每当我尝试将一个对象添加回其中时,它只会替换最后一个对象。

最佳答案

该代码会覆盖 sessionStorage.fakeCart 的任何现有值,因此序列化数组中永远不会有多个元素。您可以通过从 sessionStorage 读取值来解决此问题,而不是每次都创建一个新列表。

function addToCart(e, productNum) {
    'use strict';

    // change this
    var fakeCart = JSON.parse(sessionStorage.fakeCart) || [];

    for (var i = 0; i < fakeDatabase.length; i++) {
        if (fakeDatabase[i].id == e.currentTarget.id) {
            // and this
            fakeCart.push(fakeDatabase[i]);
        }
    }

    sessionStorage.fakeCart = JSON.stringify(fakeCart);
}

关于javascript - 使用 JavaScript 创建数组并将其存储在 sessionStorage 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22120347/

相关文章:

javascript - unique() 函数如何工作

javascript - 如何使用 ES6 模板文字定义 sessionStorage 键

javascript - 当我返回页面时 sessionStorage 不存在

javascript - Ant Design 如何创建动态字段组

javascript - 在另一个项目中打开React.js项目

javascript - IPFS。 DAG 从网络浏览器获取内容

java - Java 中是否可以创建 char 数组的数组?

javascript - 我可以将 chrome 扩展应用程序嵌入到我的主要 AngularJS 应用程序中吗?

java - 如何将ArrayList打印成行和列?

javascript - sessionStorage setItem 返回 true 或 false