首页 > 编程语言 >javascript数组splice和slice介绍

javascript数组splice和slice介绍

时间:2024-10-23 19:46:18浏览次数:9  
标签:slice splice 删除 元素 索引 let 数组 javascript

一 splice

1. 概述

splice 是 JavaScript 数组对象的一个方法,用于改变原数组的内容。它可以添加删除替换数组中的元素。

2. 语法

array.splice(start, deleteCount, item1, item2, ...)
  • start: 需要改变的数组的起始索引。如果是负数,则表示从数组末尾开始计数。

  • deleteCount: 要删除的元素的数量。如果设置为 0,则不会删除任何元素。

  • item1, item2, …: 可选参数,表示要添加到数组中的新元素。可以添加多个元素。

3 返回值

splice 方法返回一个包含被删除元素的数组。如果没有删除元素,则返回一个空数组。

4 示例

4.1 删除元素

let fruits = ['apple', 'banana', 'cherry', 'date'];

// 从索引 1 开始,删除 2 个元素
let removed = fruits.splice(1, 2);

console.log(fruits); // 输出: ['apple', 'date']
console.log(removed); // 输出: ['banana', 'cherry']

在这个例子中,从 fruits 数组中删除了 banana 和 cherry,并返回了删除的元素。

4.2 添加元素

let colors = ['red', 'green', 'blue'];

// 从索引 1 开始,不删除任何元素,添加 'yellow' 和 'purple'
colors.splice(1, 0, 'yellow', 'purple');

console.log(colors); // 输出: ['red', 'yellow', 'purple', 'green', 'blue']

此示例显示如何在数组中插入元素,而不删除任何现有元素。

4.3 替换元素

let numbers = [1, 2, 3, 4, 5];

// 从索引 2 开始,删除 1 个元素,并添加 6
numbers.splice(2, 1, 6);

console.log(numbers); // 输出: [1, 2, 6, 4, 5]

在这个例子中,3 被 6 替换。

4.4 删除所有元素

let array = [1, 2, 3, 4, 5];

// 从索引 0 开始,删除所有元素
array.splice(0, array.length);

console.log(array); // 输出: []

通过将 deleteCount 设置为数组长度,可以清空数组。

4.5 使用负索引

let items = ['a', 'b', 'c', 'd', 'e'];

// 从倒数第二个元素开始,删除 2 个元素
let removedItems = items.splice(-2, 2);

console.log(items); // 输出: ['a', 'b', 'c']
console.log(removedItems); // 输出: ['d', 'e']

使用负索引可以从数组的末尾开始进行操作。

5. 注意事项

  • 直接修改原数组: splice 方法不仅返回删除的元素,还会直接修改调用它的原数组,因此在使用时需谨慎。
  • 负索引: 可以使用负数作为 start 参数,以从数组末尾开始计数。
  • 无返回值: 如果没有删除元素,返回的是一个空数组。对于添加元素,返回值也仅与删除的元素相关。
  • 性能考虑: 对于频繁的插入和删除操作,可以考虑其他数据结构(如链表),因为 splice 在大数组中可能会导致性能问题。
  • 链式调用:由于 splice 修改原数组,之后的操作可能会受到影响。因此,在连续调用时需特别小心。

二 slice

1. 概述

slice 是 JavaScript 数组对象的一个方法,用于返回数组的一个片段(浅拷贝)。,包含从开始索引到结束索引(不包括结束索引)之间的元素。

2. 语法

array.slice(start, end)
  • start: (可选) 开始提取的索引,默认为 0。如果是负数,则表示从数组末尾开始计数。
  • end: (可选) 截止提取的索引,默认为数组长度。如果是负数,则表示从数组末尾开始

计数。

3. 返回值

slice 方法返回一个新数组,包含从 start 到 end 之间的元素(不包括 end 索引的元素)。原数组不会被改变。

4. 示例

4.1 基本用法

let fruits = ['apple', 'banana', 'cherry', 'date'];

// 从索引 1 提取到索引 3
let selectedFruits = fruits.slice(1, 3);

console.log(selectedFruits); // 输出: ['banana', 'cherry']
console.log(fruits); // 输出: ['apple', 'banana', 'cherry', 'date'] (原数组未被修改)

4.2 使用负索引

let colors = ['red', 'green', 'blue', 'yellow'];

// 从倒数第二个元素提取到最后一个元素
let selectedColors = colors.slice(-2);

console.log(selectedColors); // 输出: ['blue', 'yellow']

4.3 提取部分数组

let numbers = [1, 2, 3, 4, 5];

// 提取前 3 个元素
let partNumbers = numbers.slice(0, 3);

console.log(partNumbers); // 输出: [1, 2, 3]

4.4 提取整个数组

let animals = ['cat', 'dog', 'fish'];

// 提取整个数组
let allAnimals = animals.slice();

console.log(allAnimals); // 输出: ['cat', 'dog', 'fish']

5. 注意事项

  • 返回新数组: slice 不会修改原数组,而是返回一个新数组。对于不想改变原数组的情况非常有用。
  • 负索引: 可以使用负数作为 start 或 end 参数,以从数组的末尾进行提取。
  • 浅拷贝: slice 方法返回的是一个浅拷贝。对于嵌套数组或对象,如果原数组中的元素是引用类型,那么新数组中的元素仍然指向相同的引用。

标签:slice,splice,删除,元素,索引,let,数组,javascript
From: https://blog.csdn.net/qq_48763502/article/details/142770417

相关文章

  • 【Azure Developer】使用JavaScript通过SDK进行monitor-query的client认证报错问题
    问题描述使用JavaScript通过SDK进行monitor-query的client初始化时候,需要进行认证时报错AADSTS90002。代码如下:constcredential=newDefaultAzureCredential();constlogsQueryClient=newLogsQueryClient(credential,{endpoint:"https://api.loganalytics.azur......
  • JavaScript:三、数据类型
    JavaScript:三、数据类型JavaScript将数据类型分为两大类,分别是基本数据类型(或称为值类型)和复杂数据类型(或称为引用类型)。值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。引用数据类型(对象类型):对象(Object)、数组(Array)......
  • JavaScript: 二、基本语法
    目录2.1变量以及命名规则2.2变量的声明与赋值2.3声明变量(varletconst)2.3.1Var 2.3.2let2.3.3const2.3.4总结2.1变量以及命名规则变量是程序在内存中申请的一块用来存放数据的空间。变量由变量名和变量值组成,通过变量名可以访问变量的值。命名规则(1)不能......
  • JavaScript中的文件
    裁剪图片原理:借助Canvas,绘制圆形路径,裁剪,填充图片/***@description:裁剪图片变为圆形*@return{Promise}*@param{String}url:普通路径*/exportconstclipImageUrl=(url)=>{returnnewPromise((resolve,reject)=>{letimage=newImage......
  • Javascript数据类型及转换
    Javascript代码引入方式同HTML相似分为行内式、内嵌式、外链式    1.行内式:行内式是将JavaScript代码作为HTML标签的属性值使用。<ahref="javascript:alert('Hello');">test</a>代码杂乱容易混淆不推荐    2.嵌入式:也称为内嵌式,使用<script>标签包......
  • JavaScript 第27章:构建工具与自动化
    在现代JavaScript开发中,构建工具、代码转换工具、代码质量和代码格式化工具对于提高开发效率、保持代码整洁以及确保代码质量有着至关重要的作用。下面将分别介绍Webpack、Babel、ESLint和Prettier的配置与使用,并给出一些示例。1.构建工具:Webpack配置与使用Webpack是一个......
  • 6个关于JavaScript的超级技巧
    对象属性简写问题:将变量分配给对象属性可能会重复。解决方案:使用属性简写来简化对象创建。动态属性名称问题:使用动态属性名称创建对象可能很冗长。解决方案:使用计算属性名称动态创建对象属性。数组方法:map()、、filter()和reduce()问题:对数组进行迭代可能会重复。解决方案......
  • JavaScript 函数定义
    JavaScript使用关键字 function 定义函数。函数可以通过声明定义,也可以是一个表达式。functionfunctionName(parameters){执行的代码}functionmyFunction(a,b){ returna*b;}函数表达式JavaScript函数可以通过一个表达式定义。函数表达式可以存储在变......
  • [Javascript] Covert for loop code to recursion code
    //loopfunctiondemo1(){//beforeloopbeforeLoopCode;for(initCode;conditionCode;stepChangeCode){loopCode}postCode}//recursivefunctiondemo2(){beforeLoopCode;initCodefunction_m(){if(!c......
  • JavaScript 第25章:Vue 基础
    在学习JavaScript的第25章关于Vue的基础知识时,我们将从以下几个方面来了解Vue框架,并通过一个实战案例来巩固所学的知识。Vue概述Vue.js是一个用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,易于上手,同时......