slice和splice的区别

今天有个删除的功能,中了slice的坑了 ,记混淆了slice不改变原数组了,所以再拿出来捋一捋吧

场景区别

  • 均可以从原数组获取某片段
  • 改原数组用splice
  • 只是数组片段用slice

splice 功能

用于数组的新增、删除,会改变原数组

用法

  • array.splice(index, howmany, item1,…,itemX)
  • index 必须,插入/删除元素位置
  • howmany 删除的元素,如果未定义,则删除从index至原数组的末尾
  • item1,…,itemX 要添加的元素

DMEO1: 从指定位置,删除至数组末尾

let a = [1, 2, 3, 4, 5]
a.splice(1)
// 输出[2,3, 4,5]
// a自身发生变化:[1]

DEMO2: 数组中已index,移除元素当前元素或者多个元素

// 例如1:移除当前元素
let a = [1, 2, 3, 4, 5]
a.splice(1, 1)
// 输出[2]
// a自身发生变化:[1, 3, 4, 5]

// 例如2: 移除多个元素
let a = [1, 2, 3, 4, 5]
a.splice(2, 4)
// 输出[3, 4, 5]
// a自身发生变化:[1, 2]

DEMO3: 指定位置删除、插入

// 移除数组的第2,第3个元素,并在数组第二个位置添加新元素:
let a = [1, 2, 3, 4, 5]
a.splice(1, 2, 'a', 'b', 'c')
// 输出[2, 3]
// a自身发生变化:[1, 'a', 'b', 'c', 4, 5]

slice 功能

返回被选中的元素, 原数组无影响

用法:

  • arr.slice(开始位置,结束位置),
  • 索引从 0开始, 结束位置不包括,
  • 开始位置、结束位置参数可选
  • 负值则从数组的末尾选择
  • 字符串的截取

Demo1: 参数正整数

let a = [1, 2, 3, 4, 5]
a.slice(1, 3)
// 输出 [2, 3]

Demo2 : 省略结束位置参数,则选中开始至数组末尾的所有元素

let a = [1, 2, 3, 4, 5]
a.slice(1)
// 输出 [2, 3, 4, 5]

DEMO3: 啥参数也不写,

并不是深拷贝,只能对第一层进行拷贝,会出现拷贝不完全的情况

let a = [1, 2, 3, 4, 5]
let b = a.slice()
a === b
// false

DEMO3: 负数

let a = [1, 2, 3, 4, 5]
a.slice(-1)
// [5]
a.slice(-3)
// [3, 4, 5]
a.slice(-4, -1)
// [2, 3, 4]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

monkey01127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值