【问题标题】:avoid pushing duplicates to localStorage避免将重复项推送到 localStorage
【发布时间】:2016-08-08 05:47:35
【问题描述】:

我有一个功能代码,它将类元素的标题添加到数组中,然后将其推送到 localStorage“数据库”。一切都很好,但我不想把元素推到那里很多次“如果它已经在那里”。尝试了几个解决方案,但没有完全得到它。非常感谢任何帮助。大脑正在融化..,

    var stores=[]
  jQuery('.additem').click(function() {
    var x = jQuery(this).closest('h4.title').text();
    if ((x == null) || (x == "") || (x == ($.inArray(this.x) > -1))) {
      jQuery(this).closest('.infobox').html('Already there or empty.');
      jQuery(this).closest('.infobox').show().delay(500).fadeOut(1000);
    } else {
        stores.push(x);
        console.log(stores);
        window.localStorage.setItem("database", stores.join(" + "));
        }
    });

也试过

(x == (stores.indexOf(this) > -1))

还有一些其他的。 谢谢

【问题讨论】:

    标签: javascript arrays local-storage


    【解决方案1】:

    我认为你做得过火了。 这不是有效吗:

    if ((x == null) || (x == "") || stores.indexOf(x) > -1) {
    

    【讨论】:

    • 过度对我来说是典型的 :) 但发现了问题。这是我之前定义的调试 var stores = [C] 而不是空的。 (其中 C = localStorage 数据库。但是谢谢!现在可以使用
    【解决方案2】:

    您可以使用Set,它可以与数组相互转换以进行存储。

    var s = new Set();
    s.add(value);
    localStorage.setItem('mySet',Array.from(s).toString())
    
    var s = new Set(JSON.parse(localStorage.getItem('mySet'))
    

    【讨论】:

    • 你能指定吗?也许是一个例子?
    猜你喜欢
    • 2019-05-07
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多