通过匹配ID检查json数组中是否已经存在item
Check if item already exists in json array by matching ID
这是JSON格式的购物车。
[{"tuote":{"id":"2","name":"Rengas 2","count":16,"price":"120.00"}},{"tuote":{"id":"1","name":"Rengas 6","count":"4","price":"25.00"}},{"tuote":{"id":"4","name":"Rengas 4","count":"4","price":"85.00"}}]
格式化。
所以,我想防止在那里有两次相同的值,并通过它们的id
s进行匹配。
这是我目前的解决方案(像蟑螂一样有bug,并没有真正完成这项工作),因为它唯一有效的时候是匹配值在JSON字符串中的第一个。
for (var i = 0; i < ostoskori.length; i++) {
if (ostoskori[i].tuote.id == tuoteID) {
addToExisting(tuoteID, tuoteMaara); //this doesn't matter, it works.
break //the loop should stop if addToExisting() runs
}
if (ostoskori[i].tuote.id != tuoteID) {
addNew(tuoteID, tuoteNimi, tuoteMaara, tuoteHinta); //this doesn't matter, it works.
//break
//adding break here will stop the loop,
//which prevents the addToExisting() function running
}
}
ostoskori
是json,如果你想知道。正如您可能看到的,对于JSON内部的每个项目,addNew()
将运行的次数越多。
tuoteID
相同的id
值,则addToExisting()
应该运行。如果JSON中没有与tuoteID
相同的值,则运行addNew()
。
但如何?
您可以使用some
检查id是否已经存在。some
的美妙之处在于:
如果找到这样的元素,some立即返回true。
如果你是迎合旧的浏览器,在该页的底部有一个填充。
function hasId(data, id) {
return data.some(function (el) {
return el.tuote.id === id;
});
}
hasId(data, '4'); // true
hasId(data, '14'); // false
:
if (hasId(data, '4')) {
addToExisting();
} else {
addNew();
}
小提琴
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 是否可以禁用jquery中的单个单选按钮
- 是否可以从父类访问子类的属性
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 如何让程序检查所选单词中是否有按键
- 检查array1中的item是否存在于array2中
- JQuery是否有可能在ul元素为空时显示消息并隐藏在item上'添加
- 通过匹配ID检查json数组中是否已经存在item