当サイトは、アフィリエイト広告を利用しています
javascriptでは繰り返し処理をする場合にforEach関数をよく使いますが forEach関数内でfor文で使える
が使えないのが原因でfor文に変更したりしたことが多々ありました。
色々探してみるとforEach関数内でcontinue()やbreak()と同様のことができる方法が
見つかったのでメモ。
forEach内でreturnした場合にcontinueと同じ動作になる。
process.stdin.resume();process.stdin.setEncoding('utf8');// Your code here!const testArray:number[] = new Array()for(let i =0 ;i<5;i++){testArray.push(i)}//すべて出力const outAll = (array:number[]):void=>{console.log("全部出力-----")array.forEach(test=>{console.log(test)})}//偶数だけ出力//continueしたい場合はreturnするconst outGusu = (array:number[]):void=>{console.log("偶数のみ出力-----")array.forEach(test=>{if(test % 2 === 0){console.log(test)}else{return// return true// return false}})}//すべて出力outAll(testArray)outGusu(testArray)//結果//全部出力-----//0//1//2//3//4//偶数のみ出力-----//0//2//4
forEach内でbreakはできません。
そのため変わりにsome関数を使用します
some関数は配列などに使用し、条件を一つでも満たしていればtrueを返却する関数です。
つまり、言い換えるとtrueを返却すれば処理が終了するということです。
これを利用してsome関数でbreakするようにする
process.stdin.resume();process.stdin.setEncoding('utf8');// Your code here!const testArray:number[] = new Array()for(let i =0 ;i<5;i++){testArray.push(i)}//すべて出力const outAll = (array:number[]):void=>{console.log("全部出力-----")array.forEach(test=>{console.log(test)})}//奇数でbreak//breakしたい場合はreturnする//return falseは処理が継続するため☓const breakSome = (array:number[]):void=>{console.log("奇数でbreak-----")array.some(test=>{if(test % 2 != 0){return true}else{console.log(test)// return}})}//すべて出力outAll(testArray)breakSome(testArray)//全部出力-----//0//1//2//3//4//奇数でbreak-----//0