首页 > 解决方案 > 使用空终止迭代javascript map.values() 迭代器是个坏主意吗?

问题描述

我对 Javascript 还很陌生,目前正在处理一堆 linting 错误。寻求明确这一点。

我有一个格式为 [int, object] 的地图,该地图是通过 JSON.parse-ing 来自服务器的一些数据并放入键值映射中获得的。

我需要遍历对象集。据我了解, this: for(item in/of map) {} 性能不高,最好使用迭代器。

const iterator = map.values();当我使用和测试使用我的地图值的迭代器时

while(!iterator.done) {
  iterator.next();
}

我发现这无限循环,首先通过地图,然后通过“未定义”。

我目前的解决方案如下:

let item;
const iterator = map.values();
while ((item = iterator.next().value) != null) {
 // do stuff with item
}

这感觉像是一个合理的解决方案,但我希望能清楚地了解 while 循环内的赋值或依赖空终止在 javascript 中是否是一个坏主意;或者是否有更惯用的解决方案?

标签: javascriptdictionaryforeachiterator

解决方案


我认为大多数开发人员都会:

let value;
Object.keys(obj).forEach((key) => { value = obj[key]; console.log(value)});

对于这样一个常见的用例,处理迭代器的内部有点笨拙。


推荐阅读