Map.forEach如何优雅的跳出循环?
const m = new Map();
m.set('a1', 1);
m.set('a2', 1);
m.set('a3', 1);
m.set('a4', 1);
function fun1(map) {
map.forEach((v, k) => {
return k;
});
}
console.log(fun1(m)); // `undefined`
请问如何让他输出 a1
呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
用
forEach
是优雅不了了,可以试下for of
这和是不是Map没啥关系,主要是forEach终止不了,毕竟只是个封装好了的方法。
优雅是优雅不了的,想终止只能
try...catch...
抛出异常来强行终止,这种写法和优雅俩字应该扯不到一起去。总结:还是
for...of...
来的实在一点够胆的话你可以从原型链改:
当你想要中止循环的时候,调用
this.break
就可以:我没测试过,也没有注意
Map
和Array
的forEach
是不是完全一样(我按照Array
的标准写的),但是应该是可以用的。你的代码有几个问题:
(1) => 本身就是一个函数,你 return 只是结束了当前轮的 forEach 而已,不是 fun1 的 return
(2) forEach 不支持返回值
这个代码返输出的是 undefined
(3) forEach() 无法在所有元素都传递给调用的函数之前终止遍历
所以如楼上的兄弟所说,用 for of 吧
输出 a1