Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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
Angular2/JavaScript-如何显示所有localStorage保存的变量并获取所有键的总长度?_Javascript_Angular - Fatal编程技术网

Angular2/JavaScript-如何显示所有localStorage保存的变量并获取所有键的总长度?

Angular2/JavaScript-如何显示所有localStorage保存的变量并获取所有键的总长度?,javascript,angular,Javascript,Angular,我正在开发Angular2应用程序,其中我需要存储用户添加到购物车中的项目。为此,我使用本地存储来临时保存项目。每个类别(如鞋、衣服等)作为一个键保存在本地存储库中;它的值是一个数组,包含所有添加的项,并且属于同一类别键 我有多个键,每个键都有一个数组值。 我想访问存储的密钥,并获取所有密钥的值的长度 例: 键1的值的长度为5。 键2的值的长度为12 所以总长度是12+5=17 关于如何实现这一点有什么想法吗?为什么不把它全部存储在一个对象上,然后用JSON.stringify保存,用JSON.

我正在开发Angular2应用程序,其中我需要存储用户添加到购物车中的项目。为此,我使用本地存储来临时保存项目。每个类别(如鞋、衣服等)作为一个键保存在本地存储库中;它的值是一个数组,包含所有添加的项,并且属于同一类别

我有多个键,每个键都有一个数组值。 我想访问存储的密钥,并获取所有密钥的值的长度

例: 键1的值的长度为5。 键2的值的长度为12

所以总长度是12+5=17


关于如何实现这一点有什么想法吗?

为什么不把它全部存储在一个对象上,然后用JSON.stringify保存,用JSON.parse加载(Angular2可能有更好的访问本地存储的方法)

var存储={
“类别”:{
“鞋”:['key1'、'key2'],
“衣服”:[]
}
}
函数getCategoryLength(cat){
var合计=0;
对于(变量i=0;i
为什么不将其全部存储在一个对象上,然后JSON.stringify保存,JSON.parse加载(Angular2可能有更好的访问本地存储的方法)

var存储={
“类别”:{
“鞋”:['key1'、'key2'],
“衣服”:[]
}
}
函数getCategoryLength(cat){
var合计=0;
对于(变量i=0;i
您可以使用
对象访问密钥。密钥如下所示

var storedKeys = Object.keys(localStorage);
//length = storedKeys.length 



/*
//Assuming your have store structure like below
  localStorage = {
                    key1: [1, 2, 3],
                    key2: [1, 2, 3, 4, 5],
                    key3: "text"
                 };
*/

var flattenKeysLength = 0;
for(var key in localStorage) 
    flattenKeysLength += 
        (typeof localStorage[key] == "string")? 1:localStorage[key].length;

您可以使用
对象访问键。键
如下所示

var storedKeys = Object.keys(localStorage);
//length = storedKeys.length 



/*
//Assuming your have store structure like below
  localStorage = {
                    key1: [1, 2, 3],
                    key2: [1, 2, 3, 4, 5],
                    key3: "text"
                 };
*/

var flattenKeysLength = 0;
for(var key in localStorage) 
    flattenKeysLength += 
        (typeof localStorage[key] == "string")? 1:localStorage[key].length;

JSON.stringify(localStorage).length非常简单,如果您不介意额外的引号(如果需要可以替换()),否则,请使用
Object.keys(localStorage)
和loopJSON.stringify(localStorage).length只在您有一个对象时起作用一些令人困惑的事情:localStorage只存储字符串,而不是数组或对象,因此,不清楚存储的数组长度是否需要字符数或元素数。您是否有一个命名约定,其中不同的localStorage键在类别的末尾有一个数字来定义键?如果是这种情况,循环遍历它们并将大小加起来:
var shoeSpace=Object.keys(localStorage)。filter(/./.test,/^shoes\d+$/).map(a=>localStorage[a].length)。reduce((a,b)=>a+b)
JSON.stringify(localStorage)。如果你不介意额外的引号(如果需要,可以替换()),那么length
就非常简单了,使用
Object.keys(localStorage)
和loopJSON.stringify(localStorage)。length仅在您有一个Object时起作用一些令人困惑的事情:localStorage仅存储字符串,而不存储数组或对象,因此不清楚根据存储的数组长度是否需要字符或元素计数。您是否有一个命名约定,其中不同的localStorage键在类别的末尾有一个数字来定义键?如果是这种情况,循环遍历它们并将大小相加:
var shoeSpace=Object.keys(localStorage)。filter(/./.test,/^shoes\d+$/).map(a=>localStorage[a].length)。reduce((a,b)=>a+b)