Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种更简单的方法或不同的方法可以在JavaScript中实现此标志验证?_Javascript_Arrays_Object - Fatal编程技术网

是否有一种更简单的方法或不同的方法可以在JavaScript中实现此标志验证?

是否有一种更简单的方法或不同的方法可以在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 =

我有这种验证,只是有时似乎有效,我不知道为什么,除非有我没有看到的东西。我想在以后使用flag变量

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
,则应使用

如果希望所有元素都匹配,则应使用but
return 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,谢谢!