Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么$localStorage中的阵列可以工作_Javascript_Angularjs_Local Storage_Ng Storage - Fatal编程技术网

Javascript 为什么$localStorage中的阵列可以工作

Javascript 为什么$localStorage中的阵列可以工作,javascript,angularjs,local-storage,ng-storage,Javascript,Angularjs,Local Storage,Ng Storage,index.html 如果我没有将$localStorage.subject初始化为数组,它会给我一个错误,说明.push不是一个函数 当我将数据推送到$localStorage.address时,为什么它没有给出此错误?您使用: var Helper = { pushArray: function (arr1, arr2) { arr1 = this.toArray(arr1); if (arr1 && arr2 && A

index.html

如果我没有将$localStorage.subject初始化为数组,它会给我一个错误,说明.push不是一个函数

当我将数据推送到$localStorage.address时,为什么它没有给出此错误?

您使用:

var Helper = {
    pushArray: function (arr1, arr2) {
        arr1 = this.toArray(arr1);
        if (arr1 && arr2 && Array.isArray(arr1)) {
            arr1.push.apply(arr1, Array.isArray(arr2) ? arr2 : [arr2]);
        }
    },

    toArray: function (arr) {
        return arr ? (Array.isArray(arr) ? arr : [arr]) : [];
    }
};
Helper.pushArray(arr1, second);
或者你只是声明:

$localStorage.$default({
   subject: []
});

您是否可能在应用程序的其他部分初始化了$localStorage.address?不,我肯定没有@您可以尝试清除本地存储中的所有数据,然后查看变量是否会自动初始化。也许在浏览器的本地存储中有地址的值,这可以解释为什么它被初始化。我已经试过了。当我清除$localStorage并尝试将数据推入$localStorage.address数组时,会出现一个错误,即数组的长度未知。我认为这是因为$localStorage.address没有在任何地方初始化为数组。然而,我的问题是,首先我如何能够将数据推入$localStorage.address。例如,如果我在$scope.submit中按如下方式修改代码,$localStorage.address=address起作用,但$localStorage.subject=subject不起作用@谢谢你的回答。这很有帮助。但是,我的问题是,如何将数据推入$localStorage.address而不将其初始化为array.ok。如果$localStorage.address{$localStorage.address=data;}else{$localStorage.address.pushdata;}是的。我理解这种逻辑。我发布的代码运行良好。我不明白的是它为什么会起作用。我的问题是,如何将数据推送到$localStorage.address而不将其初始化为数组?
var Helper = {
    pushArray: function (arr1, arr2) {
        arr1 = this.toArray(arr1);
        if (arr1 && arr2 && Array.isArray(arr1)) {
            arr1.push.apply(arr1, Array.isArray(arr2) ? arr2 : [arr2]);
        }
    },

    toArray: function (arr) {
        return arr ? (Array.isArray(arr) ? arr : [arr]) : [];
    }
};
Helper.pushArray(arr1, second);
$localStorage.$default({
   subject: []
});