Javascript 它';在do…while中,是否可以使用函数检查条件是否为真?
这是我的密码。我要检查的是Javascript 它';在do…while中,是否可以使用函数检查条件是否为真?,javascript,Javascript,这是我的密码。我要检查的是中处理的所有元素是否执行。原因是在kategoriak数组中,只有一个对象具有szint:1。但是这个元素可能在数组的末尾。我希望执行此过程,直到每个元素都有一个不是0的szint。但没关系。我的问题是,我在时做错了什么?代码应该可以工作,但它是一个无限循环。有什么想法吗 do{ kategoriak.forEach(elem=>{ elem.child.forEach(child=>{ kategoriak.forEach(ell=>{ if(child==ell.
中处理的所有元素是否执行
。原因是在kategoriak
数组中,只有一个对象具有szint:1
。但是这个元素可能在数组的末尾。我希望执行此过程,直到每个元素都有一个不是0的szint
。但没关系。我的问题是,我在时做错了什么?代码应该可以工作,但它是一个无限循环。有什么想法吗
do{
kategoriak.forEach(elem=>{
elem.child.forEach(child=>{
kategoriak.forEach(ell=>{
if(child==ell.id&&elem.szint!==0){
ell.szint=elem.szint+1
}
})
})
})
}当(
() => {
kategoriak.forEach(elem=>{
if(elem.szint==0){
返回真值
}
})
返回错误
}
)
您可以在while
时提供函数,但是while
不会调用您的函数。它将把一个函数视为一个真实的值,并因此无休止地继续下去。你必须自己调用你的函数。但实际上,这是胡说八道,你只需要使用一个表达式,它会导致true
或false
,在这种情况下,你需要的是:
do {
...
} while (kategoriak.some(elem => elem.szint === 0));
(首先我不敢说这是否是解决这个问题的最佳方法。)在中,(…)
定义了一个函数,但没有调用它。因此,函数表达式本身就是条件,它始终为真。您还需要调用您的函数。i、 e
do{
...
} while(
(() => {
kategoriak.forEach(elem => {
if(elem.szint === 0){
return true
}
})
return false
})(); // Notice the parentheses we use to call the function
)
实现这一点的更好方法是使用Array.prototype.some
。当某些元素满足给定函数时,该方法返回true
do {
...
} while (kategoriak.some(elem => elem.szint === 0))
如果您提供kategoriak
数组,那就太好了,这样我们就可以知道该数组中有哪种值