2017-03-10 53 views
0

是否有一個很好的方式(除非使用JS除外)停在ES6地圖對象(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach如何在ES6 Map中中斷/關閉/停止forEach?

從例如提供MDN forEach循環 - 有沒有辦法停止對「巴」(跳過吧)枚舉:

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無論是切換到邊緣還是使用轉換器,然後:-) – Bergi

+1

@JDB'forEach'不支持鏈接,它返回undefined。它只適用於回調中的副作用,並且副作用'for ... of'是更好的解決方案。對於函數式編程,您將會尋找'map','filter'和其他基於'reduce'的構建。 – Bergi