【问题标题】:increment key in sessionStoragesessionStorage 中的递增键
【发布时间】:2018-05-19 16:34:32
【问题描述】:

所以我这里有这段代码

var i = 0;
function contactUs(event){
    event.preventDefault();
    var lettre = new message();
    sessionStorage.setItem("lettreNo" + i++, JSON.stringify(lettre));
    $("form")[0].reset();
}

但是我知道这是错误的,因为密钥不会增加,它只会覆盖这个东西,如果我转到另一个页面并返回,因为我的所有页面都使用了这个脚本,我该如何解决这个问题?

【问题讨论】:

  • 将计数器存储在存储中。或者改为存储单个数组或对象

标签: javascript key sessionstorage


【解决方案1】:

只需在一个存储属性中存储一个数组:

const letters = JSON.parse(sessionStorage.getItem("letters")) || [];
letters.push(letter /*?*/);
sessionStorage.setItem("letters", JSON.stringify(letters));

或者如果你真的想要这个复杂的关键东西,创建一个助手是有意义的:

function sessionArray(name) {
   let length = +sessionStorage.getItem(name);

   return {
     get(key) {
        return JSON.parse(sessionStorage.getItem(name + key));
     }, 
     set(key, value) {
        if(key >= length) this.setLength(key + 1);
        sessionStorage.setItem(name + key, JSON.stringify(value));
     },
     setLength(l) {
        length = l;
        sessionStorage.setItem(name, length);
     },
     push(value) {
        this.set(length, value);
     }
   };
 }

可用作:

 const letters = sessionArray("letters");
 letters.push({some: "thing"});
 console.log(letters.get(0));

【讨论】:

  • xD im french 这就是它写字母的原因,但我希望它像这样 key1 key2 key3 ...
  • @PostMaloneM3m3r 为什么?有什么具体原因吗? (而且我不是以英语为母语的人,但我更喜欢(并推荐)只用英语编码,这样你就不必在编码时切换语言,这会降低可读性)
  • 好的,但不是你的答案不正确,但我希望它像 key1 key2 key3 因为它更容易处理。
  • @postMaloneM3m3r 给你。
猜你喜欢
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 2013-09-28
  • 2016-09-06
  • 2019-09-26
相关资源
最近更新 更多