JavaScript Array.splice()和slice()的区别

// 定义一个数组等同的对象
var array = ["Code", true, "Player", -5.12, "365mini.com", 12, -3];


// 移除第4、5个元素(从第4个开始移除,共移除2个元素)
var removedArray = array.splice(3, 2);
document.writeln( removedArray ); // -5.12,365mini.com
document.writeln( array ); // Code,true,Player,12,-3
document.writeln( array.length ); // 5


// 移除第3、4个元素,并添加两个新元素
var removedArray2 = array.splice(2, 2, "新元素1", "新元素2");
document.writeln( removedArray2 ); // Player,12
document.writeln( array ); // Code,true,新元素1,新元素2,-3
document.writeln( array.length ); // 5


// 移除个数为0,返回空数组
var removedArray3 = array.splice(2, 0);
document.writeln( removedArray3 ); // (空字符串)
document.writeln( array ); // Code,true,新元素1,新元素2,-3
document.writeln( array.length ); // 5


// 妙用删除个数为0,从而实现向数组中的指定位置插入新的元素
var removedArray4 = array.splice(2, 0, "item1", "item2");
document.writeln( removedArray4 ); // (空字符串)
document.writeln( array ); // Code,true,item1,item2,新元素1,新元素2,-3
document.writeln( array.length ); // 7


// 删除个数超出数组长度,一直删除到数组末尾即可
var removedArray5 = array.splice(2, 100);
document.writeln( removedArray5 ); // item1,item2,新元素1,新元素2,-3
document.writeln( array ); // Code,true
document.writeln( array.length ); // 2


// 删除起点为负数,则start = array.length + start
var removedArray6 = array.splice(-1, 5);
document.writeln( removedArray6 ); // true
document.writeln( array ); // Code
document.writeln( array.length ); // 1
JavaScript Array.slice() 函数详解
slice()函数返回当前数组的一部分(连续的一段,以数组的形式返回)。




该函数属于Array对象,所有主流浏览器均支持该函数。




语法




array.slice( start [, end ] )
参数




参数 描述
start Number类型一个指向数组指定部分的开头的索引。
end 可选参数/Number类型一个指向数组指定部分的结尾的索引。
slice()函数一直复制到end所指示的元素,但是不包括该元素。
如果start为负,则将其视为length + start,此处length为数组的长度。
如果end为负,就将其视为length + end,此处length为数组的长度。
如果省略end,则将一直提取到数组的结尾(即end = length)。
如果end <= start,则不会将任何元素复制到新数组中,返回一个空数组。
返回值




slice()函数的返回值为Array类型,返回包含当前数组中索引start到索引end(不包括索引end)的部分元素的数组。




当前数组对象本身不会有任何改变。




示例&说明




//定义一个数组对象
var array = ["Code", true, "Player", -5.21];




// 抽取索引 1 ~ 3的部分(不包括索引3,下同)
document.writeln( array.slice(1, 3) ); // true,Player




// 抽取索引(4-2) ~ 3的部分
document.writeln( array.slice(-2, 3) ); // Player




// 抽取索引(4-2) ~ (4-1)的部分
document.writeln( array.slice(-2, -1) ); // Player




// 抽取索引1 ~ 4的部分
document.writeln( array.slice(1) ); // true,Player,-5.21




// 抽取索引1 ~ 1的部分
document.writeln( array.slice(1, 1) ); // (空字符串)




// 抽取索引1 ~ 20的部分(20超出长度,一直提取到数组结尾)
document.writeln( array.slice(1, 20) ); // true,Player,-5.21








// 抽取索引(4-8) ~ (4-5)的部分(提取范围超出索引范围,返回空数组)
document.writeln( array.slice(-8, -5) ); // (空字符串)




// 原数组没有任何变化
document.writeln( array ); // Code,true,Player,-5.21

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值