Array.prototype.slice()
slice()
方法返回一个新的数组对象
,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝
(包括 begin,不包括end)。原始数组不会被改变
。
1:简单的复制
slice
执行的一个浅拷贝,没什么卵用,浅拷贝现在基本都用扩展运算符
做,只是想说明slice的两个参数非必填
const arr2 = arr.slice()
2:获取从 N 开始的子数组
const nameArr = ['钟离', '刻晴', '甘雨', '行秋', '重云']
const newArr = nameArr.slice(2,4)
// ["甘雨", "行秋"]
3:获取从末尾 N 开始的子数组
参数可以是负数,表示到末尾数第几位
非常经典的就是这个,判断数据类型
// [object Undefined]
function checkType(value) {
// slice(start,end) 自start到end(end不包括)
// 序号从0开始,表示从第9位开始到倒数一位,也就是最后一位之前的截取
return Object.prototype.toString.call(value).slice(8, -1)
}
Array.prototype.splice()
splice()
方法通过删除
或替换
现有元素或者原地添加
新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组
。
3个参数
1:start
起始下标,从0开始,可以是负数
,如果大于Arr.length
则从末尾添加
2:deleteCount
要删除的元素个数,可选, 0 或者负数
,则不移除元素,数值过大则后面的全部移除
3:[…item1, item2]
要增加的元素,可选
1:删除
const nameArr = ['钟离', '刻晴', '甘雨', '行秋', '重云']
const newArr = nameArr.splice(1, 1)
console.log(nameArr) // ["钟离", "甘雨", "行秋", "重云"]
console.log(newArr) // ["刻晴"]
2:替换
const nameArr = ['钟离', '刻晴', '甘雨', '行秋', '重云']
const newArr = nameArr.splice(1, 1, '神里绫华')
console.log(nameArr) // ["钟离", "神里绫华", "甘雨", "行秋", "重云"]
console.log(newArr) // ["刻晴"]
3:原地添加
const nameArr = ['钟离', '刻晴', '甘雨', '行秋', '重云']
// 1 表示在 下标1这个位置进行添加,而不是在下标1之后添加
const newArr = nameArr.splice(1, 0, '神里绫华', '凝光', '宵宫')
console.log(nameArr) // ["钟离", "神里绫华", "凝光", "宵宫", "刻晴", "甘雨", "行秋", "重云"]
console.log(newArr) // []
splice的功能多的很,扩展功能遇到再说吧