带有localStorage的空数组的javascript JSON.parse结果问题

时间:2011-03-24 18:41:21

标签: javascript json

我用以下函数初始化了一个localStorage变量:

    if (!localStorage["store"]) {
       var aaa = new Array();
       localStorage["store"] = JSON.stringify(aaa);
    }   

它似乎工作正常,但是当我尝试使用该数组以便使用以下代码添加元素时:

  var one_stat = new Array( s1, s2 , resultat );
  var statistics = JSON.parse(localStorage["store"]);
  statistics.push( one_stat );
  localStorage["store"] = JSON.stringify(statistics);

我收到以下错误:

  

未捕获的TypeError:Object []没有   方法'推'

我在Ubuntu上使用Google Chrome 10.0.648.151。

有谁知道我可能做错了什么?

感谢。

2 个答案:

答案 0 :(得分:0)

本质上,JSON对象不是数组,push方法仅适用于javascript中的数组。您是否有理由不使用对象文字方法将数组数据添加到JSON对象?

e.g。

statistics.variable = one_stat;

答案 1 :(得分:0)

我尝试了以下代码,它按预期工作:

<!DOCTYPE html>         
<html>                  
<head>
<title>Prova</title>    
</head>                 
<body>
<script type="text/javascript"> 
        if (!localStorage["stor"] ) {

                localStorage["stor"] = JSON.stringify([]);
        }               

        var aa = JSON.parse( localStorage["stor"] ) ;
        console.log( aa ) ;
        aa.push( [ 1 , 2, 2 ] ) ;
        localStorage["stor"] = JSON.stringify( aa ) ;
</script>
I am trying, man
</body>
</html> 

它似乎与Prototype库有关,我正在使用它。看看这个:JSON.stringify() array bizarreness with Prototype.js

我还没有找到解决办法,但我相信我走的是正确的道路。