0

我试图在 localStorage 中存储一个数组,但后来我读到这是不可能的。所以我尝试了:

    array = {};
    array.name =        $('[name="name"]').val();
    array.username =    $('[name="username"]').val();
    array.password =    $('[name="password"]').val();
    
    alert(localStorage['accounts']);
    local = JSON.parse(localStorage['accounts']);
    localu = local.push(array);
    alert(JSON.stringify(localu));

事实上,脚本在第一个返回“[]”的警报处停止(我之前输入了该值来检查结果)。

为什么我的脚本不起作用?

4

1 回答 1

0

JavaScript,{}是一个对象。[]是一个数组。

var array = []var array = new Array()做同样的事情。

数组是一个有序的容器,每个值都有一个索引而不是一个键。

一个对象是一个命名的东西容器,每个“东西”都有一个键。

array绝对是一个对象。

var data = {};
data.name =        $('[name="name"]').val();
data.username =    $('[name="username"]').val();
data.password =    $('[name="password"]').val();

alert(localStorage['accounts']);
// > undefined OR the value
local = JSON.parse(localStorage['accounts']);
// local contains a parsed version of localStorage['accounts']
localu = local.push(array);
// localu = 0 (push returns the length i think?)
alert(JSON.stringify(localu));

试试下面的。我没有测试过它,但可能会工作。

var data = {};
data.name =        $('[name="name"]').val();
data.username =    $('[name="username"]').val();
data.password =    $('[name="password"]').val();

if (localStorage['accounts'] == undefined) { // fixed
// does the key exist? No so create something to get us started
   localu = { accounts: [] };
} else {
// the key exists! lets parse it
   localu = JSON.parse(localStorage['accounts']);
}
// add the new "data" to the list
localu.accounts.push(data);
// save the results (we have to stringify it)
localStorage['accounts'] = JSON.stringify(localu);
于 2013-04-04T23:40:36.790 回答