当前位置:首页 > JavaScript

js实现splice

2026-01-31 22:05:56JavaScript

实现 JavaScript 的 splice 方法

Array.prototype.splice 是 JavaScript 中用于修改数组的原生方法,它可以实现删除、插入或替换数组元素。以下是手动实现 splice 的核心逻辑:

js实现splice

功能概述

  • 删除元素:从指定索引开始删除一定数量的元素。
  • 插入元素:在指定索引处插入新元素。
  • 替换元素:删除旧元素并插入新元素。
  • 返回值:返回被删除的元素组成的数组。

实现代码

function customSplice(array, start, deleteCount, ...items) {
    // 处理负数索引
    const normalizedStart = start < 0 
        ? Math.max(array.length + start, 0) 
        : Math.min(start, array.length);

    // 处理未指定 deleteCount 的情况
    const normalizedDeleteCount = Math.min(
        Math.max(Number(deleteCount) || 0, 0),
        array.length - normalizedStart
    );

    const deletedElements = array.slice(
        normalizedStart, 
        normalizedStart + normalizedDeleteCount
    );

    // 分割数组:前段、待删除段、后段
    const before = array.slice(0, normalizedStart);
    const after = array.slice(normalizedStart + normalizedDeleteCount);

    // 合并前段、新插入元素、后段
    const newArray = [...before, ...items, ...after];

    // 修改原数组
    array.length = 0;
    array.push(...newArray);

    return deletedElements;
}

参数说明

  • array:目标数组(需手动传入,模拟原生方法)。
  • start:开始操作的索引(支持负数)。
  • deleteCount:要删除的元素数量(可选)。
  • ...items:要插入的新元素(可选)。

边界处理

  • 负数索引会从数组末尾计算。
  • deleteCount 未提供或为 0,仅插入元素。
  • deleteCount 超出可删除范围,仅删除至数组末尾。

使用示例

const arr = [1, 2, 3, 4, 5];
const deleted = customSplice(arr, 1, 2, 'a', 'b');
console.log(arr);       // [1, 'a', 'b', 4, 5]
console.log(deleted);   // [2, 3]

与原生的区别

  1. 原生 splice 是数组方法,此实现需手动传入数组。
  2. 此实现通过重新构建数组实现修改,而非直接操作原数组内存(仅演示逻辑)。

通过此实现可以深入理解 splice 的内部机制,适用于学习或特殊场景定制。

标签: jssplice
分享给朋友:

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…