我在使用 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/