MapでforEachする際にbreakしたい

MapでforEachする際にbreakしたい

javascriptでMapを使用する際にそれぞれの要素に対して処理したいことがあると思います。

その際にforEachが便利ではあるのですが、その処理中にbreakやcontinueなどの処理を挟むことは残念ながらできません。

やりたくなるような書き方

const bookList = new Map( [ 
    [ 1234, '良くわかるjavaScript' ],
    [ 5678, "Let's Python"],
    [ 2468, 'みんなでWordPress'] 
] );

bookList.forEach(  ( value, key ) => {
   if( 条件 ) {
       //処理
       break;
   }
} );

残念ながら上のような書き方をする場合はエラーが出てしまいます。

continueを使用した時も同様です。

Mapの繰り返し処理に対してbreakなどしようしたい場合はfor文を使用しましょう。

for文を使用する際にはIteratorを返すものが便利です。

キーを返す場合は「.keys」、値を返す場合は「.values」、キーと値ともにほしい場合は「.entries」を使用できます。

const bookList = new Map( [ 
    [ 1234, '良くわかるjavaScript' ],
    [ 5678, "Let's Python"],
    [ 2468, 'みんなでWordPress'] 
] );

const entries = bookList.entries();

for( let entry of entries ) {
    //入れた順番でキーと値のペアで取得できます。
   // (2) [1234, "よくわかるjavaScript"]
   // (2) [5678, "Let's Python"]
   // (2) [1234, "みんなでWordPress"]
}

これならば、任意ところでbreakなども可能です。

連想配列が扱いやすい形になっていますね。

phpなどほかの言語では比較的OKな形なので、ついついやってしまいたくなると思います。

この辺りは気を付けたいところです。