今天复习了数组的方法,但是对于splice()方法和slice()还有一些模糊,研究之后决定分享出来。
两种方法都可以对数组进行切割,但是有一定的区别。
1.splice方法
- splice()方法向/从数组中添加/删除元素,然后返回被删除的元素组成的数组。
- 用于数组对象。
- arr.splice(index, howmany, item1,…, itemX)
- 会改变原数组
示例:用splice方法将数组切割为偶数个
//声明arr数组
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
//定义方法
function arrSplice(arr, chunkSize) {
//定义一个空数组来接收返回值
const resSplice = []
while (arr.length > 0) {
//注意:splice方法的返回值为删除的值,在这边即为原数组中切割掉的index为0-chunkSize的值
const chunk = arr.splice(0, chunkSize)
//将返回值添加到resSplice数组
resSplice.push(chunk)
}
//return出去
return resSplice
}
console.log(arrSplice(arr,2))
2.slice方法
- slice()方法主要用于截取数组,并返回截取到的新数组。
- 数组和字符串对象均可以使用。
- arr.slice(start, end)(包括index为start的值但不包括end,如果为负数,则从数组的末尾开始。比如为-1,则是倒数第一个值)
- 不会改变原数组
示例:用slice方法将数组切割为每个数组三个
//声明一个新数组
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
//定义方法
function arrSlice(arr, chunkSize) {
//定义一个新变量来接收
const resSlice = []
for (let i = 0; i < arr.length; i += chunkSize) {
//注意:这里slice返回的值为新数组,并不会影响原数组的值
const chunk = arr.slice(i, i + chunkSize)
resSlice.push(chunk)
}
return resSlice
}
console.log(arrSlice(arr, 3))
受限于两种方法在切割数组上的区别,splice方法用while切割更合适,而slice方法用for循环切割更合适。