Is there a nice way (except using JS exceptions) to stop forEach loop in ES6 Map object ( )
From example provided on MDN - is there a way to stop enumeration on 'bar' (skip bar):
function logMapElements(value, key, map) {
console.log(`m[${key}] = ${value}`);
}
new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements);
For the people who suggest to close this question: yes, it is similar to the questions about Array.prototype.forEach.
But at the same time is different: most of the suggested answers won't work with ES6 set and map. Only throwing the exception will work, but I ask for some other ways
Is there a nice way (except using JS exceptions) to stop forEach loop in ES6 Map object (https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach )
From example provided on MDN - is there a way to stop enumeration on 'bar' (skip bar):
function logMapElements(value, key, map) {
console.log(`m[${key}] = ${value}`);
}
new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements);
For the people who suggest to close this question: yes, it is similar to the questions about Array.prototype.forEach.
But at the same time is different: most of the suggested answers won't work with ES6 set and map. Only throwing the exception will work, but I ask for some other ways
There is no good reason to use forEach
any more in ES6. You should use iterators and for … of
loops from which you can ordinarily break
:
const m = new Map([['foo', 3], ['bar', {}], ['baz', undefined]]);
for (let [key, value] of m) {
console.log(`m[${key}] = ${value}`);
}
For those who don't want for-of, the following approach can be applied:
const length = myMap.size;
const iterator = myMap.entries();
for (let i = 0; i < length; i++) {
const item = iterator.next().value;
console.log(`myMap[${itemkey}] = ${value}`);
}
A benefit that I have personally encountered is that this approach produces less code during es5 transpilation (using Typescript transpiler with all its __values
and __read
definitions)...