从Angular的本地存储中获取所有数组

时间:2019-10-17 09:34:52

标签: arrays angular

我已经在本地存储中动态创建了编号数组:

<select>
            <option value="">SELECT MONTH</option>
            <option value="2019-10">October-2019</option>     
            <option value="2019-11">November-2019</option>     
            <option value="2019-12">December-2019</option>     
            <option value="2019-01">January-2019</option>     
            <option value="2019-02">February-2019</option>     
            <option value="2019-03">March-2019</option>     
            <option value="2019-04">April-2019</option>     
            <option value="2019-05">May-2019</option>     
            <option value="2019-06">June-2019</option>     
            <option value="2019-07">July-2019</option>     
            <option value="2019-08">August-2019</option>     
            <option value="2019-09">September-2019</option>     
    </select>

,我想递归地将它们全部拉出。不必花哨。我不知道该怎么做。我有:

 key:   array1     value: [{foo, bar, etc}]
 key:   array2     value: [{bar, foo, etc}]

但是我知道这是不对的。本地存储甚至都不是数组。 有任何想法吗? 不知道如何处理这样的事实:它们的名称可以是任意数量。

3 个答案:

答案 0 :(得分:4)

您应该能够使用Object.keys()遍历各个键并在每个键上调用getItems()

Object.keys(localStorage).forEach(data => 
{
  let item = localStorage.getItem(data);
  console.log(item); // item is the item from storage.
});

答案 1 :(得分:2)

您可以使用Object.values方法或Object.entries将其转换为数组,具体取决于您发现更有用的内容。

所以会是这样:

for (array of Object.values(localStorage)) {
       console.log(array);
}

答案 2 :(得分:2)

将数组作为对象存储在本地存储中

localStorage.setItem("array1", ["foo", "bar", "etc"])

并获得像这样的数组元素

for (var i = 0; i < localStorage.length; i++){
    console.log(localStorage.key(i), localStorage.getItem(localStorage.key(i)));
}