当前位置: 代码迷 >> JavaScript >> 存储和检索 100 个元素的数组
  详细解决方案

存储和检索 100 个元素的数组

热度:100   发布时间:2023-06-13 12:28:04.0

我正在使用 Greasemonkey/Tampermonkey 访问页面并根据当前页面上的内容对 100 个元素的表进行更改。

短期存储和数组操作工作正常,但我想永久存储数据。 我已经尝试过GM_getValue / GM_setValueGM_SuperValuelocalStorageindexedDB ,但我显然缺少一些基本的东西。
似乎没有什么允许我将数组写入永久存储,然后将其读回一个我可以访问每个元素的variablename[32] ,这样variablename[32]实际上是表中的第 32 个元素(好吧,如果您开始计数,则为第 33 个在零,我这样做)。

我需要在脚本运行时访问整个 100 元素表,因为我需要在页面本身上输出部分或全部内容。 在最基本的情况下,我有一个从 0 到 99 的 for 循环,每次打印出variablename[i]的值。

我对任何方法都没有偏好,我只是想让这个该死的东西在 Greasemonkey/Tampermonkey 脚本中工作。

在脚本的顶部,我有这个:

for (var i = 0; i <= 99; i++) {
    currentData[i] = localStorage.getItem(currentData[i]);
}

上一节的目的是将 100 个条目读入currentData数组。 现在这对我来说实际上不起作用,可能是因为我一开始就没有正确存储东西。

在中间,修改其中一个元素后,我想通过这样做来替换它:

localStorage.setItem(
        currentData[specificElementToChange], differentStuff);

上面的目的是改变 100 行数据之一并永久存储,所以下次读取顶部的代码时,它将拉出所有 100 个条目,其中一个元素被上述行更改。

这是一般原则。

我不知道我正在做的事情是否因为 Firefox/Chrome 的一些安全问题而不起作用,或者我想要做什么(永久存储一个数组,每次我访问给定页面时,一个元素都会发生变化)是不可能的。

使用variable[element]格式访问数组很重要,但除此之外,我可以存储此数据并检索它的任何方式对我来说都很好。

我认为你这样做是错误的。 LocalStorage 存储字符串,因此在 LocalStorage 中存储数组的最简单方法是将其字符串化为 JSON 并存储 JSON。 然后,在读回它时,您将 JSON 解析回一个数组。

因此,要阅读它,请执行以下操作:

var currentData = JSON.parse(localStorage.getItem("currentData") || "[]");

要保存数据,请执行以下操作:

localStorage.setItem("currentData", JSON.stringify(currentData));

工作演示: :


这样做时, currentData是一个包含普通数组的变量(在您从 LocalStorage 读入数据之后)。 您可以使用.push()向其中添加项目,读取带有数字索引的项目,例如:

var lastItem = currentData[currentData.length - 1];

或者,使用以下命令更改数组中的项目:

currentData[0] = "newValue";

当然,它只是一个普通的数组,所以你可以对它使用任何数组方法。

  相关解决方案