2017-03-10 19 views
0

良い方法はES6 MapオブジェクトMDNに提供される例から(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEachES6 MapでforEachを中断/中断する方法は?

でforeachループを停止する(JSの例外を使用することを除いて)あり - 「バー」(バーをスキップ)に列挙を停止する方法があります:この質問を閉じることをお勧め人々のために

function logMapElements(value, key, map) { 
    console.log(`m[${key}] = ${value}`); 
} 
new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements); 

は:はい、それはArray.prototype.forEachについての質問に似ています。
しかし、同時に異なっています。提案された回答のほとんどは、ES6セットとマップでは機能しません。例外を投げるだけで動作しますが、私は他の方法を求めます。

+0

それは似ていますが、同時に異なるです。提案された回答のほとんどは、ES6セットとマップでは機能しません。例外を投げるだけで動作しますが、私はいくつかの方法を求めます。 – vmg

答えて

3

これ以上ES6ではforEachを使用する正当な理由はありません。あなたはイテレータとfor … ofループを使用すべきことができますから、通常break

const m = new Map([['foo', 3], ['bar', {}], ['baz', undefined]]); 
for (let [value, key] of m) { 
    console.log(`m[${key}] = ${value}`); 
} 
+0

IE11はイテレータをサポートしていません – vmg

+0

@vmg Edgeに切り替えるか、またはtranspilerを使用します: – Bergi

+1

@JDB forEachは連鎖をサポートしません。それは 'undefined'を返します。これはコールバックの副作用にのみ適しており、副作用のためにfor ... ofが優れた解決策です。関数型プログラミングでは、 'map'、' filter'、 'reduce'をベースにしたものを探します。 – Bergi

関連する問題