JavaScript中高效向嵌套数组每个元素追加5个空字符串的方法
向嵌套数组的每个子数组追加空字符串的高效实现方案
问题描述
原始嵌套数组:
const myArray = [[3,1,1,1],[4,2,1],[5,2],[6]];
期望输出数组:
[[3,1,1,1,'','','','',''],[4,2,1,'','','','',''],[5,2,'','','','',''],[6,'','','','','']]
你的实现方案:
const array1 = [[3, 1, 1, 1],[4, 2, 1],[5, 2],[6]]; const appendArray = new Array(5).fill(''); const map1 = array1.map(x => x.concat(appendArray)); console.log(JSON.stringify(map1));
你的方案效率分析
你的实现已经是非常高效的方案,核心优势在于:
- 仅创建一次
appendArray,避免重复生成相同的空字符串数组,减少内存冗余与重复计算 - 使用
map遍历原数组,这是引擎优化过的高性能遍历方式,且不会修改原数组,属于安全的纯函数操作 concat是数组拼接的原生方法,底层由JS引擎优化,性能优于手动循环push的常规写法
极致优化方向(性能差异极小)
如果追求理论上的极致性能,且允许修改原数组(需根据业务场景判断),可以采用手动循环+批量push的方式:
const array1 = [[3, 1, 1, 1],[4, 2, 1],[5, 2],[6]]; for (let i = 0; i < array1.length; i++) { array1[i].push('', '', '', '', ''); } console.log(JSON.stringify(array1));
或者用apply批量推送(现代引擎下与直接写参数差异可忽略):
const array1 = [[3, 1, 1, 1],[4, 2, 1],[5, 2],[6]]; const append = ['', '', '', '', '']; for (let i = 0; i < array1.length; i++) { Array.prototype.push.apply(array1[i], append); }
不过这种方式的性能提升微乎其微,仅在处理超大规模数组时才可能体现。若需要保留原数组,你的map+concat方案依然是最优选择。
总结
- 需保留原数组:你的方案是简洁高效的最佳实践,无需修改
- 可修改原数组:手动循环+
push有理论上的微小性能优势,但代码可读性略低
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

