面试官:JavaScript 数组的常用方法有哪些?

57 阅读4分钟

数组的常用方法有哪些?

数组的常用方法可以归纳为增删改查,这篇文章将一一列举。

  • push()
  • splice()
  • unshift()
  • concat()

前三种会改变原数组,第四种则不会对原数组产生影响。

push(item1, item2, ..., itemX) 方法在数组末尾添加任意多个值,返回数组的最新长度

let arr = [] // 创建一个数组
let count = arr.push(1, "it's high time", 33) // 从数组末尾添加三项
console.log(count, arr) // 3 [1, "it's high time", 33]

splice(index, howmany, item1,....., itemX) 方法用作增添数组项时传入三个参数,分别是开始位置、0( howmany 要删除的元素数量)、插入的元素,返回空数组

let arr = ["show time", "big time", "me time"]
let removed = arr.splice(1, 0, "quality time", "quiet time")
console.log(arr) // ['show time', 'quality time', 'quiet time', 'big time', 'me time']
console.log(removed) // []

unshift(item1,item2, ..., itemX) 方法在数组开头添加任意多个值,返回数组的最新长度

let arr = new Array() // 创建一个数组
let count = arr.unshift("22", "33") // 从数组开头添加两项
console.log(count, arr) // 2 ['22', '33']

array1.concat(array2, array3,..., arrayX) 方法首先会创建一个当前数组的副本,然后再把它的参数添加到副本末尾,最后返回这个新构建的数组,不会影响原始数组

let arr = ["meal time", "work time", "nap time"]
let arr2 = arr.concat("bed time", ["homework time", "face time"])
console.log(arr) // ['meal time', 'work time', 'nap time']
console.log(arr2) // ['meal time', 'work time', 'nap time', 'bed time', 'homework time', 'face time']

  • splice()
  • shift()
  • pop()
  • slice()

前三种会改变原数组,第四种不改变原数组。

array.splice(index,howmany,item1,.....,itemX) 方法也可用作删除数组项,此时传入两个参数,分别是 index 开始位置,howmany 删除元素的数量,返回包含删除元素的数组

let arr = ["meal time", "work time", "bed time"]
let removed = arr.splice(0,1) // 删除第一项
console.log(arr) // ["work time", "bed time"]
console.log(removed) // ["meal time"],removed 是一个数组

array.shift() 方法用于删除数组的第一项,同时减少数组的 length 值,返回被删除的项

let arr = ["meal time", "work time"]
let item = arr.shift(); //  获取第一项
console.log(item) // meal time
console.log(arr.length, arr) // 1 ['work time']

array.pop() 方法用于删除数组的最后一项,同时减少数组的 length 值,返回被删除的项

let arr = ["meal time", "work time"]
let item = arr.pop(); // 取得最后一项
console.log(item) // work time
console.log(arr.length, arr) // 1 ['meal time']

slice(start, end) 方法可从已有的数组中返回选定的元素。不会影响原始数组。也可提取字符串的某个部分,并以新的字符串返回被提取的部分。接收两个参数,分别是 start 开始位置,end 结束位置。

let arr = [1, 2, 3, 4, 5]
let arr2 = arr.slice(1)
let arr3 = arr.slice(1, 4)
console.log(arr)   // [1, 2, 3, 4, 5]
console.log(arr2) // [2, 3, 4, 5]
console.log(arr3) // [2, 3, 4]

  • splice() 方法用于添加或删除数组中的元素,故也可修改数组。使用见上文。

  • find()
  • includes()
  • indexOf()

三者都不改变原数组

array.find(function(currentValue, index, arr),thisValue) 方法返回通过测试(函数内判断)的数组的第一个元素的值。find() 方法为数组中的每个元素都调用一次函数执行:

  • 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 undefined
let arr = [
    {
        name: "zhangsan",
        age: 35
    },
    {
        name: "lisi",
        age: 40
    }
];
arr.find((item, index, array) => item.age < 40) // // {name: "zhangsan", age: 35}

arr.includes(searchElement, fromIndex) 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。searchElement 要查找的元素,fromIndex 开始查找位置。

let arr = ['a', 'b', 'c']

arr.includes('c') // true
arr.includes('c', 3)  // false
arr.includes('b', 0)  // true
arr.includes('b', 2)  // false
arr.includes('c', 100) // false 

注意:如果 fromIndex 大于等于数组长度 ,则返回 false 。该数组不会被搜索。

string.indexOf(searchvalue, start) 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。也可用于数组查找元素。

let arr = [1, 2, 3, 4, 5, 3, 4, 0, 9]
arr.indexOf(3) // 2
arr.indexOf(7) // -1

写在最后

写作不易,如果这篇文章对你有帮助,请不要吝啬你手中的赞👍!你的鼓励将是我不断分享的动力!😄 前端更多知识及内容请关注如下【同步更新】。

📢 update 同步更新

掘金专栏 | 知乎专栏 | Github | 简书专栏 | CSDN | segmentfault