按值过滤 map 中的数据的最佳方法是什么?
我已经实现了forEach
,然后将键值添加到另一个映射(因为不建议在迭代时删除映射)
theMap.forEach((value, key) => { if (value !== 'something') { otherMap.set(key, value)}})
有没有更有效的方法来按值过滤 Map?我尝试使用 lodash
过滤功能,但无法实现它......
最佳答案
最简单的方法可能是在迭代时创建一个临时数组,例如
Array.from(theMap).forEach(([key, value]) => {
if (someFilterLogic) theMap.delete(key);
});
或者创建一个新的 map
,例如
theMap = new Map(Array.from(theMap).filter(([key, value]) => someFilterLogic));
一般来说,担心 JS 代码的“效率”最好留给分析器。不同浏览器和版本之间的高效程度差异很大。除非您已经分析并明确知道某些内容是瓶颈,或者使用真正不正确的算法运行时编写了代码,否则不要担心。
关于javascript - Ecmascript 6 map 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47103226/