如何在不事先知道密钥的情况下检索所有localStorage项?

用户1942359:

我想展示之前写的所有键和存储。我的代码如下。我创建了一个函数(allStorage),但是它不起作用。我怎样才能做到这一点?

    function storeUserScribble(id) {
        var scribble = document.getElementById('scribble').innerHTML;
        localStorage.setItem('userScribble',scribble);
    }

    function getUserScribble() {
        if ( localStorage.getItem('userScribble')) {
            var scribble = localStorage.getItem('userScribble');
        }
        else {
            var scribble = 'You can scribble directly on this sticky... and I will also remember your message the next time you visit my blog!';
        }
        document.getElementById('scribble').innerHTML = scribble;
    }

    function clearLocal() {
        localStorage.clear();
        return false;
    }

    function allStorage() {
        var archive = [];
        for (var i = 0; i<localStorage.length; i++) {
            archive[i] = localStorage.getItem(localStorage.key(i));
        }
    }
用户1693593:

如果您将功能修改为此,则可以基于键列出所有项目(仅列出项目):

function allStorage() {

    var values = [],
        keys = Object.keys(localStorage),
        i = keys.length;

    while ( i-- ) {
        values.push( localStorage.getItem(keys[i]) );
    }

    return values;
}

Object.keys是JavaScript(ECMAScript 5)的新增功能。它列出了对象上所有自己的键,这比使用for-in循环更快。

但是,这不会显示键。为此,您需要返回一个对象而不是一个数组(这是毫无意义的IMO,因为这将带给您与使用另一个对象的localStorage一样远的功能-举例来说):

function allStorage() {

    var archive = {}, // Notice change here
        keys = Object.keys(localStorage),
        i = keys.length;

    while ( i-- ) {
        archive[ keys[i] ] = localStorage.getItem( keys[i] );
    }

    return archive;
}

如果您想要一个紧凑的格式列表,请改为执行此操作-在此数组中的每个项目都将具有key=item,您以后可以其拆分成对,依此类推:

function allStorage() {

    var archive = [],
        keys = Object.keys(localStorage),
        i = 0, key;

    for (; key = keys[i]; i++) {
        archive.push( key + '=' + localStorage.getItem(key));
    }

    return archive;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不事先知道密钥的情况下更改注册表属性数据的数据

如何在不事先知道类型的情况下动态构造Scala类?

如何在不事先知道队列名称的情况下路由到队列?

如何在不事先知道的情况下提取网页的URL?

Ada-(Streams)如何在不事先知道字符串长度的情况下正确调用String'Read()

如何在不事先知道文件类型的情况下将base64解码为文件?

如何在不事先知道该值的情况下选择一列中具有相同值的行?

如何在不事先知道名称的情况下调用类的实例

有没有办法在不事先知道值的情况下用php更新mysql表?

如何在不预先知道要更新哪些字段的情况下连续更新多个字段

如何在不预先知道要设置多少个条件的情况下动态链接Firebase中的条件

如何在不知道特定孩子密钥的情况下统一从Firebase检索数据

有没有一种快速的方法可以在不事先知道文件类型的情况下使用 SMTP 在 python 中发送电子邮件附件?

如何在不获取唯一密钥的情况下从Firebase检索值

如何在不覆盖现有密钥的情况下向Dynamodb映射添加新密钥?

如何在不截断输出的情况下通过 PowerShell 检索 Windows Defender 排除项

如何在不事先通知的情况下从url获取参数

如果一张地图只有一个成员,如果你不知道密钥,如何在不循环的情况下获得它?

如何在没有DnsServer模块的情况下使用PowerShell检索所有DNS记录?

如何在不知道它们的编号的情况下动态获取所有元素

如何在不知道元素的情况下循环所有XML属性

如何在不知道大小的情况下绘制matlab中的所有矩阵元素?

如何在R中进行多因素回归(一般线性模型)而不事先知道预测变量的数量?

如何在不获取UnsatifiedLinkError的情况下加载具有依赖项的JNI .dylib文件?

如何在不知道密钥名称的情况下获取密钥名称

如何在不破坏现有HTML的情况下更改DOM中的所有文本?

如何在不更改全局打印选项的情况下显示数据框的所有列?

如何在不获取所有组合的情况下获得大括号扩张对?

表格分区 - 如何在不破坏所有内容的情况下添加列?