如何检查localstorage是否有重复值?

时间:2015-10-23 01:31:56

标签: javascript jquery local-storage

我这里有这段代码http://jsfiddle.net/so0rL8kj/3/

我在对象数组中已经存在输入检查时遇到问题。

我试过循环json.parse(urls)这样的东西

if (this.url == id) {
    console.log("found:  " + JSON.stringify(this));
    $(".order").append("<li>" + id + " ... already exists in your list.</li>");
    return false;
}

但是这并没有阻止代码执行localstorage.setitem保存。我还尝试保存为数组,然后使用inArray(),但也没有使用此功能的结果。

如何添加检查以停止来自localstorage的用户输入的重复项?

编辑:工作小提琴http://jsfiddle.net/so0rL8kj/4/

1 个答案:

答案 0 :(得分:1)

您无法使用$.inArray()将字符串与对象数组进行比较。

数组看起来像:

[{"url":"someVal"},{"url":"Anotherval"}]

所有$.inArray()将会查看每个对象,并且永远找不到匹配项,因为您在数组的每个元素中查找对象属性的值

您可以使用for循环迭代数组并将每个url属性与字符串进行比较,或使用各种数组方法,如Array.prototype.filter()

var alreadyExists = arrayCheck.filter(function(item){
    return id ==== item.url
}).length;

这会将数组过滤到与url匹配的对象,如果没有长度则没有匹配