grep函数中的每个JavaScript

grep函数中的每个JavaScript,javascript,jquery,Javascript,Jquery,我在使用grep函数时遇到问题。我的代码是 var zapis = jQuery.grep(ListaGrupa, function(v, k) { console.log($(that).attr("kursid")); if (v.grupa.ID == $(that).attr("kursid")) { idZaBrisanje = v.kategorija.Id; return true; } if ($.each(v.grupa.Podgrupe, f

我在使用
grep
函数时遇到问题。我的代码是

var zapis = jQuery.grep(ListaGrupa, function(v, k) {
  console.log($(that).attr("kursid"));
  if (v.grupa.ID == $(that).attr("kursid")) {
    idZaBrisanje = v.kategorija.Id;
    return true;
  }

  if ($.each(v.grupa.Podgrupe, function(kljuc, vrednost) {

    if (vrednost.podgrupa.ID == $(that).attr("kursid")) {

      idZaBrisanje = vrednost.podkategorija.Id;

      return true;
    }
  }))

    return false;

})[0];
但在每个范围内似乎都返回true,所以in不会影响grep函数,所以我得到的结果是空的。
有什么帮助吗?

是的,本例中的
返回true
将指示
每个
函数继续迭代。它不会中断您的
grep
功能

相反,您可能需要设置一个标志,然后返回
false
,以便终止迭代:

var found = false;
$.each(function() {
   if(condition) {
      found = true;
      return false;
   }
});

if(found)
   return true;
此外,
$。每个
将始终返回迭代对象,该对象将始终是真实的,因此您不能在条件中以您正在执行的方式使用它

在这种情况下,您可能会重新考虑jQuery是否真的在帮助您。您可以考虑回到这里的正则for循环,这将允许您从迭代中立即返回<<代码> GRP函数。< /P>
for(var i = 0; l = v.grupa.Podgrupe; i<l; i++) {
   var vrednost = v.grupa.Podgrupe[i];
   if(condition)
      return true;
}
for(变量i=0;l=v.grupa.Podgrupe;i