从 localStorage 在数组上运行 for 循环

Posted

技术标签:

【中文标题】从 localStorage 在数组上运行 for 循环【英文标题】:Running for loop on array from localStorage 【发布时间】:2018-12-05 10:25:15 【问题描述】:

我正在localStorage 中创建和存储一个数组,我想使用for 循环将数组解析为容器内的单独divs。这是我目前所拥有的:

var arr = ['item 1', 'item 2', 'item 3'];
window.localStorage.setItem('myArr', JSON.stringify(arr));

function populateContainer() 
  var newArr = window.localStorage.getItem('myArr');
  $('.container').html('');
  
  for (var i = 0, len = newArr.length; i < len; i++) 
    $('.container').append('<div>' + newArr[i] + '</div>');
  

populateContainer();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>

不幸的是,这样做是为数组项的每个单独字符创建一个单独的 div,所以我最终得到了 18 个 divs,每个字符都有一个字符,而不是 3 个 divs 和 3 个数组项。抱歉sn-p 不工作,显然SO 不支持localStorage

【问题讨论】:

你必须做 JSON.parse 【参考方案1】:

您正确地将 JSON 存储在 localStorage 中,但您还需要在检索它时将其返回到 parse()

var arr = JSON.parse(window.localStorage.getItem('myArr'));

Working example

【讨论】:

【参考方案2】:

你需要在循环遍历它时再次解析 JSON,因为你将数组保存为字符串:

var arr = ['item 1', 'item 2', 'item 3'];
window.localStorage.setItem('myArr', JSON.stringify(arr));

function populateContainer() 
  var arr = JSON.parse(window.localStorage.getItem('myArr'));
  $('.container').html('');

  for (var i = 0, len = arr.length; i < len; i++) 
    $('.container').append('<div>' + arr[i] + '</div>');
  

populateContainer();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>

JSFiddle 因为 localStorage 在这里不起作用:https://jsfiddle.net/45h3fn0a/1/

【讨论】:

【参考方案3】:

如果您使用 JSON.stringify() 存储数据,则必须使用 JSON.parse() 将其重新放入数组中,如下所示:


var arr = ['item 1', 'item 2', 'item 3'];
window.localStorage.setItem('myArr', JSON.stringify(arr));

function populateContainer() 
  var newArr = JSON.parse(window.localStorage.getItem('myArr'));
  $('.container').html('');
  
  for (var i = 0, len = newArr.length; i < len; i++) 
    $('.container').append('<div>' + newArr[i] + '</div>');
  

populateContainer();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>

【讨论】:

以上是关于从 localStorage 在数组上运行 for 循环的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组从localStorage映射到reactJS中的表?

清除后,localStorage 会记住以前的值

无法删除 localStorage 数组项

SecurityError: localStorage is not available for opaque orig

localstorage不刷新无法读取

json内容,该如何循环输出(JS)