数组的常用方法笔记(一)
1.shift()
用于删除数组的第一个元素,并返回第一个元素的值,会改变原数组。
const arr = [1, 2, 3]
const val = arr.shift()
console.log(val) // 1 返回第一个元素的值
console.log(arr) // [2,3] 原数组发生改变
2.unshift()
用于向数组的开头添加元素,会改变原数组,并返回新的长度。
const arr = [1, 2, 3]
const val = arr.unshift(0)
console.log(val) // 4 返回新的长度
console.log(arr) // [0,1,2,3] 原数组发生改变
3.push()
用于向数组的尾部添加元素,会改变原数组,并返回新的长度。
const arr = [1, 2, 3]
const val = arr.push(0)
console.log(val) // 4 返回新的长度
console.log(arr) // [1,2,3,0] 原数组发生改变
4.pop()
用于移除数组的最后一个元素,并返回移除的元素,会改变原数组。
const arr = [1, 2, 3]
const val = arr.pop()
console.log(val) // 3 返回移除的元素
console.log(arr) // [1,2] 原数组发生改变
5.slice(start,end)
它会返回一个新数组,将所有从索引 start 到 end(不包括 end)的数组项复制到一个新的数组。原数组不变,start 和 end 都可以是负数,在这种情况下,从末尾计算索引。
ps: 若只传一个参数i,则代码从头开始删除i个元素,返回剩余元素
const arr = [1, 2, 3, 4, 5]
const val = arr.slice(2)
console.log(val) // [3,4,5] 返回剩余元素
console.log(arr) // [1,2,3,4,5] 原数组不变
const arr = [1, 2, 3, 4, 5]
const val = arr.slice(2,4)
console.log(val) // [3,4] 复制下标2到4(不包括4)的元素组成新数组
console.log(arr) // [1,2,3,4,5] 原数组不变
const arr = [1, 2, 3, 4, 5]
const val = arr.slice(2,-2)
console.log(val) // [3] 负数从末尾计算,复制下标2到-2(不包括-2)的元素组成新数组
console.log(arr) // [1,2,3,4,5] 原数组不变
6.splice(start,deleteCount,insertVal)
主要用来对数组进行删除元素,插入新元素,替换等操作
-
start 开始位置(必填项) 移除从 start 位置开始的指定个数的元素并插入新元素,从而修改原数组。返回值是一个由所移除的元素组成的新数组。
-
deleteCount 删除个数(非必填) 从start位置开始删除deleteCount个元素,不填则一直删除到最后一个元素
-
insertVal 插入元素(非必填)
const arr = [1, 2, 3, 4, 5]
const val1 = arr.splice(1)
console.log(val) // [2,3,4,5] 返回自start位置后移除的所有元素
console.log(arr) // [1] 原数组改变
const arr1 = [1, 2, 3, 4, 5]
const val2 = arr1.splice(1,1)
console.log(val2) // [2] 返回自start位置后移除的一个元素组成的数组
console.log(arr1) // [1,3,4,5] 原数组改变
const arr2 = [1, 2, 3, 4, 5]
const val3 = arr2.splice(1,1,9)
console.log(val3) // [2] 返回自start位置后移除的一个元素组成的数组
console.log(arr2) // [1,9,3,4,5] 原数组改变并在移除位置插入新元素
ps: 数组的删除如果用deletet 方法,数组长度不变,原来数组的索引也保持不变,只是被删除的元素变成了 undefined, 这是因为 delete obj.key 是通过 key 来移除对应的值,对于对象来说是可以的。但是对于数组来说,我们通常希望剩下的元素能够移动并占据被释放的位置。所以splice和slice会更合适一点