JSON.stringify(xxx) 将数组转换成 JSON 字符串
JSON.parse (xxx) 将该字符串重新转换成数组
在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了。二者用法完全相同,这里以localStorage为例。
代码:
localStorage.a = 3;//设置a为"3"
localStorage["a"] = "sfsf";//设置a为"sfsf",覆盖上面的值
localStorage.setItem("b","isaac");//设置b为"isaac"
var a1 = localStorage["a"];//获取a的值
va2 = localStorage.a;//获取a的值
var b = localStorage.getItem("b");//获取b的值
localStorage.removeItem("c");//清除c的值
这里最推荐使用的自然是getItem()和setItem(),清除键值对使用removeItem()。如果希望一次性清除所有的键值对,可以使用clear()。
以下示例使用 JSON.parse 将 JSON 字符串转换成对象。
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);document.write(contact.surname + ", " + contact.firstname);
// Output: Aaberg, Jesper
以下示例演示了如何使用 JSON.stringify 将数组转换成 JSON 字符串,然后使用 JSON.parse 将该字符串重新转换成数组。
var arr = ["a", "b", "c"];
var str = JSON.stringify(arr);document.write(str);document.write ("<br/>");
var newArr = JSON.parse(str);
while (newArr.length > 0) { document.write(newArr.pop() + "<br/>");}
// Output:// ["a","b","c"]// c// b// a
数据存取
1.存储一个元素存储多种信息的数组类型数据
var message = {};定义一个名字为message的对象
message.name = which_name_one;定义message的.name属性
message.phone = which_name_two;定义message的.phone属性
message.activity = which_name_three; 定义message的.activity属性
上述定义也可以这样定义:
message = {name: which_name, phone: which_phone, activity:which_activity};
var messages = JSON.parse(localStorage.getItem('messages')) || [];
定义一个messages数组
messages.push(message);将message数组的一个元素压入messages数组中
若需要后压入的位于数组的开头可用messages.unshift(message);
localStorage.setItem("messages", JSON.stringify(messages));存储一下数组
上述步骤就可以完成存储一个包含多种属性的数组
数据存储格式如下:
[{"name":"张三","phone":"52289552","activity":"a"},
{"name":"李四","phone":"5228982","activity":"a"},
{"name":"王五","phone":"5228989","activity":"a"}]
2.提取多种属性的数组元素
以messages数组为例
若要提取messages的某个元素的某个属性值:
messages[i].name;提取messages数组中第i个元素的name
若要提取王五的电话:messages[2].phone
数组元素下标从0开始
提取元素前应先定义或提取一下数组messages
添加此句var messages = JSON.parse(localStorage.getItem('messages')) || [];
3.存储字符串类型数据
localStorage.setItem('activity', activity.name);存储字符串类型数据
将activity.name存储在名为activity的名下
当用这个数据时localStorage.activity即可调用此数据,这种存发只能存储一个数据,下次赋值会覆盖前面的数据