[英]It's possible to use a function to check if the condition is true or false in do…while?
這是我的代碼。 我要檢查的是在do
處理過所有元素。 原因是在kategoriak
數組中,只有一個對象具有szint: 1
。 但是此元素可能位於數組的末尾。 我要執行此過程,直到每個元素的szint
不為0。但這無關緊要。 我的問題是,我是在錯誤的做什么while
? 該代碼應該可以工作,但這是一個無限循環。 有任何想法嗎?
do{ kategoriak.forEach(elem => { elem.child.forEach(child => { kategoriak.forEach(ell => { if(child === ell.id && elem.szint !== 0){ ell.szint = elem.szint + 1 } }) }) }) } while( () => { kategoriak.forEach(elem => { if(elem.szint === 0){ return true } }) return false } )
您可以給while
一個函數,但是while
不會調用您的函數。 它將功能視為真實價值,因此將不斷地延續下去。 您必須自己調用函數。 但實際上,這是胡說八道,您只需要使用一個結果為true
或false
的表達式,在這種情況下,您要查找的是Array.prototype.some
:
do {
...
} while (kategoriak.some(elem => elem.szint === 0));
(我首先不敢說這是否是解決此問題的最佳方法。)
在while(...)
內部,您定義了一個函數,但未調用它。 因此,函數表達式本身就是條件,始終為真。 您還需要調用函數。 即
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.