我这里有这段代码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/
答案 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匹配的对象,如果没有长度则没有匹配