JS-数组的常用方法(一)

178 阅读3分钟

数组的常用方法笔记(一)

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)

主要用来对数组进行删除元素,插入新元素,替换等操作

  1. start  开始位置(必填项) 移除从 start 位置开始的指定个数的元素并插入新元素,从而修改原数组。返回值是一个由所移除的元素组成的新数组。

  2. deleteCount 删除个数(非必填) 从start位置开始删除deleteCount个元素,不填则一直删除到最后一个元素

  3. 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会更合适一点