是否有一种更简单的方法或不同的方法可以在JavaScript中实现此标志验证?
我有这种验证,只是有时似乎有效,我不知道为什么,除非有我没有看到的东西。我想在以后使用flag变量是否有一种更简单的方法或不同的方法可以在JavaScript中实现此标志验证?,javascript,arrays,object,Javascript,Arrays,Object,我有这种验证,只是有时似乎有效,我不知道为什么,除非有我没有看到的东西。我想在以后使用flag变量 var flag = false var productos_grupo_promocion = [ { "idgrupo": 1, "cantidad_producto": 5 }, { "idgrupo": 6, "cantidad_producto": 1 } ] var arr =
var flag = false
var productos_grupo_promocion = [ { "idgrupo": 1, "cantidad_producto": 5 }, { "idgrupo": 6, "cantidad_producto": 1 } ]
var arr = [ { "idgrupo": 1, "cantidad": 5 }, { "idgrupo": 6, "cantidad": 1 } ]
productos_grupo_promocion.forEach(function (obj){
var matched_elements = arr.filter(item => item.idgrupo == obj.idgrupo)
matched_elements.forEach(function(item){
if(parseInt(obj.cantidad_producto) == parseInt(item.cantidad)){
flag = true
}else{
flag = false
}
})
})
当前的问题是,如果您的上一个产品有匹配的元素,但与最后一个匹配的元素不匹配,它会将
标志设置为false
假设您希望在有1个匹配项时将标志设置为true
,则应使用
如果希望所有元素都匹配,则应使用butreturn false
,以防没有匹配的\u元素
所以我假设你想早点退出,把逻辑改成
var productos\u grupo\u promotion=[{
“idgrupo”:1,
“cantidad_producto”:5
}, {
“idgrupo”:6,
“cantidad_producto”:1
}]
var arr=[{
“idgrupo”:1,
“cantidad”:5
}, {
“idgrupo”:6,
“康蒂达”:1
}]
功能匹配(促销、标签){
返回promos.some(函数(obj){
var matched_elements=tags.filter(item=>item.idgrupo==obj.idgrupo);
返回匹配的元素。部分(函数(项){
返回parseInt(obj.cantidad_producto)=parseInt(item.cantidad);
});
});
}
日志(hasMatch(productos_grupo_promotion,arr))
是否标志
仅表明存在1个匹配项?在这种情况下,请使用Array.some
而不是forEach
(在这两种情况下)第一个解决方案解决了我的问题,但使用了Array.every,谢谢!