JavaScript 中按固定间隔在数组指定位置插入元素的通用方法

阿萱小哥_3685

阿萱小哥_3685

2026-01-08

791人浏览

原创

JavaScript 中按固定间隔在数组指定位置插入元素的通用方法

本文介绍如何在 javascript 数组中,每 10 个原始元素为一组,在每组的第 2 位(索引 1)和第 9 位(索引 8)分别插入带序号的标记元素(如 `b1`、`c1`),并确保插入逻辑不因数组动态增长而错位。

在实际开发中,我们常需对数组进行结构化增强——例如为分页数据添加分隔符、为日志序列插入时间锚点,或像本例一样,按固定周期注入标记元素。关键挑战在于:插入操作会改变原数组长度和后续元素索引,若遍历方式不当,极易导致重复插入或位置偏移。

核心思路是:
✅ 使用 for 循环配合手动控制索引(而非 forEach 或 map);
✅ 利用 i % 10 精确识别“当前元素在所属 10 元素块中的相对位置”;
✅ 通过 Math.ceil(i / 10) 动态计算当前属于第几组(即 b1/c1 中的数字);
✅ 每次成功插入后,执行 ++i 跳过新插入的元素,避免其被重复处理。

以下是完整、健壮的实现代码:

const array = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6','a7', 'a8', 'a9', 'a10',
               'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a17', 'a18', 'a19', 'a20',
               'a21', 'a22', 'a23'];

// 定义插入规则:key 为「相对于每组起始的索引」,value 为前缀字符
const insertionRules = new Map([
  [1, 'b'], // 在每组第 2 个位置(索引 1)插入 bX
  [8, 'c']  // 在每组第 9 个位置(索引 8)插入 cX
]);

for (let i = 0; i <p>⚠️ <strong>注意事项</strong>:  </p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill12496" title="Java 开发专家"><img
														src="https://img.php.cn/upload/skill/001/246/273/6adaf20d79f23518.jpg" alt="Java 开发专家" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/xiazai/skill12496" title="Java 开发专家" class="overflowclass">Java 开发专家</a>
													<p class="overflowclass">精通 Java 21+,掌握虚拟线程、模式匹配和 Spring Boot 3.x 等现代特性。是 Java 生态系统(包括 GraalVM、Project Lo</p>
												</div>
												<a rel="nofollow" href="/xiazai/skill12496" title="Java 开发专家" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div>
  • i % 10 基于原始数组索引计算分组位置,因此必须在插入前判断;
  • Math.ceil((i + 1) / 10) 比 Math.ceil(i / 10) 更准确(例如 i=0 对应第 1 个元素,应属第 1 组);
  • splice(i, 0, ...) 是原地修改,若需保留原数组,请先 const result = [...array] 再操作;
  • 若插入规则复杂(如多级嵌套、条件跳过),建议封装为可复用函数,接受 arr, rules, groupSize 为参数。

该方案时间复杂度为 O(n²)(因 splice 在中间插入为线性操作),适用于中等规模数组(≤ 10k 元素)。如需极致性能,可改用“构建新数组”策略(一次遍历生成结果),但本例的可读性与维护性已足够优秀。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

javascript java

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

2025.12.04

858

13

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2023.09.20

2478

7

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

2025.09.05

750

5

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.16

343

7

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

2025.11.17

553

20

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.27

323

6

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

2026.11.12

100

15

Go-Zero安装与goctl环境配置教程
Go-Zero安装与goctl环境配置教程

本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。

2026.11.12

60

15

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

2026.11.12

60

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.5万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.8万人学习