JavaScript -- 数组常用方法及示例代码总结

数组的方法

Array参考文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

1 Array.isArray()

- 用来检查一个对象是否是数组    
// 下面的都返回true
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array("a", "b", "c", "d"));
Array.isArray(new Array(3));
//Array.prototype 本身也是一个array
Array.isArray(Array.prototype);

// 下面的都返回false
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(17);
Array.isArray("Array");
Array.isArray(true);
Array.isArray(false);
Array.isArray(new Uint8Array(32));

2 at()

  • 可以根据索引获取数组中的指定元素
  • at()可以接收负索引作为参数

image-20221202195124807

3 concat()

用来连接两个或多个数组

非破坏性方法,不会影响原数组,而是返回一个新的数组

const arr = ["孙悟空", "猪八戒", "沙和尚", "唐僧"]
const arr2 = ["白骨精", "蜘蛛精", "玉兔精"]
let result1 = arr.concat(arr2) // 连接一个数组
let result2 = arr.concat(arr2, ["牛魔王","铁扇公主"]) // 连接两个数组

console.log(result1)
console.log(result2)
console.log(arr)
console.log(arr2)

看结果可以发现原素组并未被改变,并且按照传入的顺序拼接到一起

image-20221202195427905

4 indexOf()

  • 获取元素在数组中第一次出现的索引
  • 参数:
    1. 要查询的元素
    2. 查询的起始位置
  • 返回值:
    • 找到了则返回元素的索引,
    • 没有找到返回-1
let arr = ["孙悟空", "猪八戒", "沙和尚", "唐僧", "沙和尚"]
console.log(arr.indexOf("沙和尚"))
console.log(arr.indexOf("沙和尚", 3))

image-20221202195725247

5 lastIndexOf()

  • 获取元素在数组中最后一次出现的位置

  • 返回值:

    • 找到了则返回元素的索引,
    • 没有找到返回-1
let arr = ["孙悟空", "猪八戒", "沙和尚", "唐僧", "沙和尚"]
console.log(arr.lastIndexOf("沙和尚"))

image-20221202195828246

6 join()

  • 将一个数组中的元素连接为一个字符串
  • 参数:
    • 指定一个字符串作为连接符
arr = ["孙悟空", "猪八戒", "沙和尚", "唐僧", "沙和尚"]
console.log(arr.join())// 默认使用 , 分割
console.log(arr.join("@-@"))
console.log(arr.join(" "))

image-20221202200259301

7 slice()

  • 用来截取数组(非破坏性方法)

  • 参数(前开后闭):

    1. 截取的起始位置(包括该位置
    2. 截取的结束位置(不包括该位置
    • 第二个参数可以省略不写,如果省略则会一直截取到最后
    • 索引可以是负值
  • 如果将两个参数全都省略,则可以对数组进行浅拷贝(浅复制)

arr = ["孙悟空", "猪八戒", "沙和尚", "唐僧", "沙和尚"]
console.log(arr.slice(0, 2))
console.log(arr.slice(1, 3))
console.log(arr.slice(1, -1))
console.log(arr.slice())

image-20221202200248498

8 push()

向数组的末尾添加一个或多个元素,并返回新的长度

arr = ["孙悟空", "猪八戒", "沙和尚"]
console.log(arr.push("bb"))
console.log(arr)

image-20221202221330901

9 pop()

删除并返回数组的最后一个元素

arr = ["孙悟空", "猪八戒", "沙和尚"]
console.log(arr.pop())
console.log(arr)

image-20221202221621022

10 unshift()

向数组的开头添加一个或多个元素,并返回新的长度

arr = ["孙悟空", "猪八戒", "沙和尚"]
console.log(arr.unshift("bb"))
console.log(arr)

image-20221202221633061

11 shift()

删除并返回数组的第一个元素

arr = ["孙悟空", "猪八戒", "沙和尚"]
console.log(arr.shift())
console.log(arr)

image-20221202221650266

12 splice()

  • 可以删除、插入、替换数组中的元素

  • 参数:

    1. 删除的起始位置
    2. 删除的数量
    3. 要插入的元素
  • 返回值:

    • 返回被删除的元素

删除

arr = ["孙悟空", "猪八戒", "沙和尚"]
console.log(arr.splice(1, 2))
console.log(arr)

image-20221202221924900

插入

插入的话就是删除0个,然后第一个参数指定开始位置,后面的参数指定要插入的元素

arr = ["孙悟空", "猪八戒", "沙和尚"]
console.log(arr.splice(1, 0, "猪", "猴"))
console.log(arr)

image-20221202222022256

修改

修改的话需要将第二个参数设置成和要插入的参数一样长即可

arr = ["孙悟空", "猪八戒", "沙和尚"]
console.log(arr.splice(1, 2, "猪", "猴"))
console.log(arr)

image-20221202222346816

13 reverse()

反转数组,返回翻转后的数组

arr = ["孙悟空", "猪八戒", "沙和尚"]
console.log(arr.reverse())
console.log(arr)

image-20221202222414083

14 sort()

  • sort用来对数组进行排序(会对改变原数组)

  • sort默认会将数组升序排列

    • 注意:sort默认会按照Unicode编码进行排序,所以如果直接通过sort对数字进行排序可能会得到一个不正确的结果

      let arr = [2, 3, 1, 9, 0, 4, 5, 7, 8, 6, 10]
      arr.sort()
      

      image-20221203005444915

  • 参数:

    • 可以传递一个回调函数作为参数,通过回调函数来指定排序规则
      • (a, b) => a - b 升序排列
      • (a, b) => b - a 降序排列
let arr = [2, 3, 1, 9, 0, 4, 5, 7, 8, 6, 10] 
arr.sort((a, b) => a - b)
arr.sort((a, b) => b - a)

升序排列

image-20221203005509650

降序排列

image-20221203005532830

15 forEach()

  • 用来遍历数组
  • 它需要一个回调函数作为参数,这个回调函数会被调用多次
    • 数组中有几个元素,回调函数就会调用几次
    • 每次调用,都会将数组中的数据作为参数传递
  • 回调函数中有三个参数:
    • element 当前的元素
    • index 当前元素的索引
    • array 被遍历的数组
arr = ["孙悟空", "猪八戒", "沙和尚", "唐僧"]

arr.forEach((element, index, array) => {
    console.log(element, index, array)
})

image-20221203005657069

16 filter()

  • 将数组中符合条件的元素保存到一个新数组中返回
  • 需要一个回调函数作为参数,会为每一个元素去调用回调函数,并根据返回值来决定是否将元素添加到新数组中
  • 非破坏性方法,不会影响原数组
arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr.filter((ele) => ele > 5)

image-20221203005800782

不做任何过滤

arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr.filter((ele) => true)

image-20221203010052431

17 map()

https://www.bilibili.com/video/BV1mG411h7aD?t=1349.8&p=111

  • 根据当前数组生成一个新数组
  • 需要一个回调函数作为参数,回调函数的返回值会成为新数组中的元素
  • 非破坏性方法不会影响原数组
arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr.map((ele) => ele * 2)

image-20221203005834212

18 reduce()

https://www.bilibili.com/video/BV1mG411h7aD?t=1750.5&p=111

  • 可以用来将一个数组中的所有元素整合为一个值
  • 参数:
    1. 回调函数,通过回调函数来指定合并的规则
    2. 可选参数,初始值
arr = [1, 2, 3, 4, 5, 6, 7, 8]
result = arr.reduce((a, b) => {
    console.log(a, b)
    return a + b
})

image-20221203010000793

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hydrion-Qlz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值