javascript - 如何替换或交换数组?
问题描述
我用 保存myArray = [{a: 1, b:2}, {a:3, c:4}]
在 localStorage 中
JSON.stringify(myArray)
,用 解析它JSON.parse(localStorage.getItem('nameInLS'));
并将其存储在一个名为 的变量localData
中,如果console.log
使用,它会返回以下内容:
[{a: 1, b:2}, {a:3, c4}]
我的代码适用,myArray
我的问题是,如何将空myArray
(重新加载站点时为空)替换为localData
?
如果我可以交换两个数组的内容,它也会起作用。
目标是,在页面加载时,如果 localStorage 不为空,则将内容加载到myArray
中,稍后调用一个函数,该函数构建一个包含以下内容的 html 表myArray
我尝试了一些奇怪的事情,例如:
myArray.push(localData) //worked but looked like this [[...]]
myArray = localData
localData = myArray //both didn't work
谢谢你。
解决方案
最初从 localStorage 加载某些内容有什么问题?
如果您尝试保存对象,这可能不起作用。您需要将其转换为 JSON 字符串,如下所示:
const LOCAL_STORAGE_KEY = 'my-array';
// initial load
const rawValue = localStorage.getItem( LOCAL_STORAGE_KEY );
let myArray = rawValue ? JSON.parse( rawValue ) : [];
// do stuff
myArray.push( 'test' );
// save it back again
localStorage.setItem( LOCAL_STORAGE_KEY, JSON.stringify( myArray ) );
推荐阅读
- amazon-s3 - 我可以在不先禁用 CDN cloudfront 的情况下删除它吗?会不会有什么影响?
- python - matplotlib FigureCanvasTkAgg 窗口在缩放或平移模式下抖动
- php - PHP PDO PostgreSQL -> 插入/更新日期或时间戳的数组,以及布尔值
- sql-server-2012 - 在 Microsoft SQL Server 2012 中创建启用 Filestream 的 DB
- laravel-5 - 在 laravel 上使用 eloquent 加入一对多模型
- java - 信令链路选择
- java - BigDecimal 除法方法返回 0 还是 ArithmeticException?
- python - 创建一个 lambda 字典(所有 lambda 都相同)
- string - QString 最大拆分(块的数量?)
- c++ - 检测 QTableWidget 中是否添加或删除了列