ES数组操作:splice() 实现数组删除、替换、增加指定元素

举报
SHQ5785 发表于 2023/01/21 07:40:34 2023/01/21
【摘要】 一、前言注:该方法会改变原始数组。ES6从数组中删除指定元素,然后返回被删除的项目。findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。arr.splice(arr.findIndex(item => item.id === data.id), 1) 二、splice实现删除、替换、新增splice(index,len,[item]) splice有3个...

一、前言

注:该方法会改变原始数组。

ES6从数组中删除指定元素,然后返回被删除的项目。

findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。

arr.splice(arr.findIndex(item => item.id === data.id), 1)

二、splice实现删除、替换、新增

splice(index,len,[item]) 

splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值。

  • index:数组开始下标
  • len: 替换/删除的长度
  • item:替换的值,删除操作的话, item为空

如:arr = ['a','b','c','d']

  • 删除 ---- item不设置
arr.splice(1,1) //['a','c','d'] 删除起始下标为1,长度为1的一个值,len设置的1,如果为0,则数组不变
arr.splice(1,2) //['a','d'] 删除起始下标为1,长度为2的一个值,len设置的2
  • 替换 ---- item为替换值
arr.splice(1,1,'ttt') //['a','ttt','c','d'] 替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1
arr.splice(1,2,'ttt') //['a','ttt','d'] 替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1
  • 添加 ---- len设置为0,item为添加值
arr.splice(1,0,'ttt') //['a','ttt','b','c','d'] 表示在下标为1处添加一项‘ttt’

三、slice

slice() 方法可从已有的数组中返回选定的元素,执行后原数组并未发生改变。
使用方法:

arr.slice(start,end); // start为初始位置,end为结尾位置,返回的结果是从start到end(不取)的新数组
arr.slice(start); // 选取从start开始直至最后一个元素

例子:

var arr1 = [1,2,3,4];
console.log(arr1.slice(1)); //[2, 3, 4]
console.log(arr1.slice(1,2));//[2]
console.log(arr1);//[1,2,3,4]

解析: arr1.slice(1)没有指定结尾位置,则默认选取至最后一个元素(注:最后一个元素会被选)。

arr1.slice(1,2) 指定从1开始选取,到2结束,但是不选择2。

注意:和splice()不一样,slice()执行后原数组并未发生改变。

四、拓展阅读

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。