slice/splice

鉴于本人总是把slice和splice弄混,此处写一遍加深记忆。

首先注意两者的共同点:

  • 针对数组

不同点在于:

  • 功能完全不同;
  • 返回值的用法不同;
  • 是否改变原数组
slice

slice的作用是从已有数组中返回选定的元素
参数说明:arrayObject.slice(start, end)
start —— 必需,规定从何处开始选取。如果是负数,则规定的是从数组尾部开始算起的位置(-1指最后一个元素,-2指倒数第二个元素)。
end —— 可选,规定从何处结束选取(不包括该元素)。如果没有指定,则选取到数组结束的所有元素。如果是负数,那么他规定的是从数组尾部开始算起的元素。
补充说明:负数只表示选取位置,并不能旋转数组。(end取负数的倒数第几元素,依旧不选取,结果包含它左边的元素)

控制台测试:

var a = [1,2,3,4,5,6,7,8,9]
a.slice(3)
<< [4, 5, 6, 7, 8, 9]
a.slice(3,-2)
<< [4, 5, 6, 7]
a.slice(-3,-2)
<< [7]
a.slice(-6,-2)
<< [4, 5, 6, 7]
var b = a.slice(1,5) // 返回值是被截取的数组,原数组始终未改变
b
<< [2, 3, 4, 5]
splice

splice的作用是对数组添加或删除元素,并返回被删除的元素
参数说明:arrayObject.splice(index, howmany, item1, … , itemX)
index —— 必需,添加/删除的位置,如果是负数则从数组结尾处规定。
howmany —— 必需,要删除的元素数量,如果设置为0, 则不会删除元素。
item1, … , itemX —— 可选,向数组添加的新元素。

控制台测试:

var a = [1,2,3,4,5,6,7,8,9]
var b = a.splice(3,0)
b
<< []
var b = a.splice(3,1)
b
<< [4]
a
<< [1, 2, 3, 5, 6, 7, 8, 9]
var b = a.splice(3,-1) // 第二个参数表示数量,负数无效果
b
<< []
a
<< [1, 2, 3, 5, 6, 7, 8, 9]
var b = a.splice(-3,1)
b
<< [7]
a
<< [1, 2, 3, 5, 6, 8, 9]
var b = a.splice(3,2,'a','b')
b
<< [5, 6]
a
<< [1, 2, 3, "a", "b", 8, 9]

两者对比:

var xs = [1,2,3,4,5];

// 纯的
xs.slice(0,3);
//=> [1,2,3]
xs.slice(0,3);
//=> [1,2,3]
xs.slice(0,3);
//=> [1,2,3]


// 不纯的
xs.splice(0,3);
//=> [1,2,3]
xs.splice(0,3);
//=> [4,5]
xs.splice(0,3);
//=> []

对比示例原文:https://blog.csdn.net/u013007900/article/details/79104110

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值