grep 函数中的每个 JavaScript

标签 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, function(kljuc, vrednost) {

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

      idZaBrisanje = vrednost.podkategorija.Id;

      return true;
    }
  }))

    return false;

})[0];

但是似乎 return true 在每个范围内,所以不会影响 grep 函数,所以我得到空结果。 有帮助吗?

最佳答案

是的,在这种情况下 return true 将指示您的 each 函数继续迭代。它不会中断您的 grep 函数。

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

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

if(found)
   return true;

此外,$.each 将始终返回迭代对象,该对象始终为真,因此您不能像现在这样在条件中使用它。

在这种情况下,您可能会重新考虑 jQuery 是否真的在帮助您。您可以考虑在此处退回到常规的 for 循环,这将允许您从迭代中立即返回 grep 函数。

for(var i = 0; l = v.grupa.Podgrupe; i<l; i++) {
   var vrednost = v.grupa.Podgrupe[i];
   if(condition)
      return true;
}

关于grep 函数中的每个 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290910/

相关文章:

javascript - 将背景图像渲染到 Canvas

javascript - 我们如何合并两个 instagram API 的结果

javascript - 将数据渲染成 Angular 时遇到问题

javascript - JS构造函数的原型(prototype)属性和它的原型(prototype)之间的区别

javascript - 多选下拉菜单在 asp.net 中不起作用

javascript - 未捕获的类型错误 : Cannot call method 'toJSON' of undefined in backbone

jQuery Mobile 列表项拆分按钮,主项上没有链接

javascript - 如何传播事件?无效状态错误 : Failed to execute 'dispatchEvent' on 'EventTarget' : The event is already being dispatched

jquery - 子类化 jQuery 对象

javascript - Jquery 点击事件的 Html 更新