如何在不事先知道密钥的情况下检索所有localStorage项
How to retrieve all localStorage items without knowing the keys in advance?
我想显示之前编写的所有密钥和存储。我的代码在下面。我创建了一个函数(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));
}
}
ES2015+中最简单的方法是:
const items = { ...localStorage };
如果您将函数修改为这样,您可以根据键列出所有项目(仅列出项目):
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循环更快,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;
}
最简单的方法是使用:
return JSON.stringify(localStorage);
localStorage
不是一个数组,而是一个对象,所以试试这样的东西:
for (var a in localStorage) {
console.log(a, ' = ', localStorage[a]);
}
// iterate localStorage
for (let i = 0; i < localStorage.length; i++) {
// set iteration key name
const key = localStorage.key(i);
// use key name to retrieve the corresponding value
const value = localStorage.getItem(key);
// console.log the iteration key and value
console.log('Key: ' + key + ', Value: ' + value);
}
for (let [key, value] of Object.entries(localStorage)) {
console.log(`${key}: ${value}`);
}
更简洁一点:
function getAllLocalStorage() {
return Object.keys(localStorage)
.reduce((obj, k) => {
return { ...obj, [k]: localStorage.getItem(k)}}, {});
}
获取所有";localStorage";,复制它并将localStorage
设置在您想要的位置
let localstorage= {...localStorage}
let content = 'localStorage.clear()
$.each(localstorage,(i,e)=> {
content+=`localStorage.setItem('${i}','${e}');`})
copy(content)
您可以使用带有hasOwnProperty
的for循环来检查对象是否有键。
for (var key in localStorage) {
if (localStorage.hasOwnProperty(key)) {
console.log(key, ' = ', localStorage[key]);
}
}
这将返回所有设置的密钥
const getLocalStorageObject = () => {
storage = {}
let index = 0
while (localStorage.key(index) !== null) {
const key = localStorage.key(index);
storage[key] = localStorage.getItem(key)
index += 1
}
return storage;
}
我希望它能帮助你,我添加了一个rest参数,这只允许留下所需的属性
localStorage.setItem("clear", "values")
const {clear, ...rest } = localStorage;
function allStorage(val) {
const { ...rest } = localStorage;
return val ? Object.keys(rest) : Object.values(rest);
}
console.log(allStorage(false));
通过以下方式获取localStorage密钥数组:
console.log('keys: ', localStorage._keys)
尝试"正确答案"可能会很明显,但如果您想迭代或只搜索关键字名称,localStorage._keys
是您的简单起点。
这些都是庞大的或完全不正确的。
正确答案是:JSON.parse(JSON.stringify(localStorage))
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 如何在没有额外空格的情况下从MySQL中检索字符数据
- 在不知道名称的情况下检索json元素
- 如何在没有任何元素id的情况下检索表中的文本内容
- 如何在没有任何事件的情况下从 document.ready 上的服务器端检索值
- 如何在不依赖 javascript 中的 id、类或内容的情况下查找和检索节点位置
- 如何在不使用 Twitter API 1.1 的情况下检索 Twitter user_timeline
- Javascript:检索在没有 JQuery 的情况下选择了哪个下拉菜单
- 使用 AJAX 从数据库中检索数据,并在没有框架的情况下对它们进行分页
- 在没有Firefox扩展的情况下,使用Selenium从Firefox 43检索控制台日志
- 如何在不事先知道密钥的情况下检索所有localStorage项
- 为什么我不能在没有点击的情况下检索“这个”dom 元素
- 如何从数据库检索数据,并把它们变成对象在我的情况下