百万条数据场景下,快速生成指定格式名称数组的最优方案
最快的实现方案
对于百万级别的数据量,原生普通for循环+预分配数组长度是性能最优的方案,它能避免forEach/map这类方法带来的函数调用开销,同时预分配长度减少了数组动态扩容的内存操作损耗。
实现代码
const len = result.length; const nameArray = new Array(len); // 预分配数组长度 for (let i = 0; i < len; i++) { nameArray[i] = { name: result[i].name }; }
为什么这个方案更快?
- 预分配数组长度:
new Array(len)直接创建指定长度的数组,避免了push操作时数组多次扩容的性能消耗。 - 普通for循环:相比
forEach和map,没有每次迭代的函数调用栈开销,是JavaScript中遍历数组性能最高的方式。
额外优化尝试
如果你的运行环境支持ES6解构赋值,也可以尝试以下写法(性能略逊于上面的方案,但代码更简洁):
const len = result.length; const nameArray = new Array(len); for (let i = 0; i < len; i++) { const { name } = result[i]; nameArray[i] = { name }; }
内容的提问来源于stack exchange,提问作者pewpewlasers
相关产品推荐
相关产品推荐

