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
数组,那就太好了,这样我们就可以知道该数组中有哪种值