slice()方法:
/**
* arrayObject.slice(start, end);
* slice()方法不改变原数组
* end为可选参数
* 截取包含start,不包含end
*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = arr.slice(2, 4); //起始索引2,结束索引4
console.log(arr); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(result); //[3, 4]
/**
* start和end均可为负数
* 负数时,索引相当于arrayObject.length+start
* arrayObject.length+end
*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = arr.slice(-6, -1); //起始为倒数第6个元素,结束为倒数第1个元素
console.log(arr); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(result); //[4, 5, 6, 7, 8]
/**
* 无end时,截取至数组结束
*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = arr.slice(2); //无结束索引
console.log(arr); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(result); //[3, 4, 5, 6, 7, 8, 9]
splice()方法:
/**
* arrayObject.splice(start, deleteCount, items...)
* start[必需]: 添加/删除元素的位置,使用负数时与slice()中参数相同
* deleteCount[必需]: 要删除的元素个数,如果为0,则不删除
* items[可选]]: 向数组添加的新元素
* splice()方法改变原数组
*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = arr.splice(1, 3); //从索引为1的元素起删除3个元素,并将其返回
console.log(arr); //[1, 5, 6, 7, 8, 9]
console.log(result); //[2, 3, 4]
/**
* splice()只返回被删除的元素数组
*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = arr.splice(5, 0, "hello"); //在索引为5的元素前插入"hello"
console.log(arr); //[1, 2, 3, 4, 5, "hello", 6, 7, 8, 9]
console.log(result); //[]
/**
* splice()可以同时删除并添加元素
*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = arr.splice(2, 3, "hello"); //从索引为2的元素起删除3个元素,并添加"hello"
console.log(arr); //[1, 2, "hello", 6, 7, 8, 9]
console.log(result); //[3, 4, 5]