You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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));

你的方案效率分析

你的实现已经是非常高效的方案,核心优势在于:

  1. 仅创建一次appendArray,避免重复生成相同的空字符串数组,减少内存冗余与重复计算
  2. 使用map遍历原数组,这是引擎优化过的高性能遍历方式,且不会修改原数组,属于安全的纯函数操作
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:40:25