首页 > 解决方案 > javascript map会造成内存泄漏吗?

问题描述

我看到许多开发人员使用 .map() 方法而不是 .forEach()。由于返回的数组未分配给引用,因此 map 不会创建未分配的内存吗?

例如:

let obj = {}
a.map(item => {
    item.map((el, i) => {
      obj[el] = i
    })
})

标签: javascriptarrays

解决方案


这样做是非常糟糕的做法 -无缘无故地使用mapover是错误的。应该只用于直接修改数组,而不是迭代它。垃圾收集器进来并删除由 生成的未分配数组,并且不会发生内存泄漏。该代码更好地表示为:forEachmapmap

let obj = {}
a.forEach(item => {
    item.forEach((el, i) => {
      obj[el] = i
    });
});

甚至:

let obj = a.reduce((a, c) => ({ ...a, ...(c.reduce((A, C, i) => ({ ...A, [C]: i }))) }));

推荐阅读