JavaScript 数组方法详解:改变原数组与不改变原数组

在 JavaScript 中,数组是一个非常常用的数据结构,处理数组的各种方法可以帮助我们高效地进行数据的增删改查。数组的方法可大致分为两大类:改变原数组和不改变原数组。了解这些方法的功能和使用方式,对于提高编程效率非常重要。

本文将介绍常见的数组方法,并按照是否改变原数组进行分类。

一、改变原数组的方法

改变原数组的方法会直接修改数组本身。使用这些方法时要小心,避免不必要的数据更改。以下是常见的数组方法,分为不同的类别。

1. 添加元素

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

    let arr = [1, 2, 3];
    arr.push(4); // arr = [1, 2, 3, 4]
    
  • unshift()
    向数组的开头添加一个或多个元素,并返回新数组的长度

    let arr = [1, 2, 3];
    arr.unshift(0); // arr = [0, 1, 2, 3]
    

2. 删除元素

  • pop()
    删除数组的最后一个元素,并返回被删除的元素

    let arr = [1, 2, 3]; arr.pop(); // arr = [1, 2], 返回值是 3
  • shift()
    删除数组的第一个元素,并返回被删除的元素

    let arr = [1, 2, 3];
    arr.shift(); // arr = [2, 3], 返回值是 1
    

3. 修改数组顺序

  • reverse()
    反转数组中元素的顺序。

    let arr = [1, 2, 3]; arr.reverse(); // arr = [3, 2, 1]
  • sort()
    按照字母顺序或Unicode码点排序数组的元素。

    let arr = [3, 1, 2];
    arr.sort(); // arr = [1, 2, 3]
    

4. 添加或删除任意位置的元素

  • splice()
    在指定位置删除一定数量的元素,并可以插入新元素。
    let arr = [1, 2, 3, 4];
    arr.splice(2, 1, 5, 6); // arr = [1, 2, 5, 6, 4], 返回值是 [3]
    

5. 填充数组

  • fill()
    指定的值填充整个数组或数组的指定部分。
    let arr = [1, 2, 3];
    arr.fill(0, 1, 2); // arr = [1, 0, 3]
    

二、不改变原数组的方法

不改变原数组的方法会返回新的数组或值,而不会直接修改原数组本身。使用这些方法可以保证原数组不受影响,非常适合需要保留原数组不变的场景。

1. 连接数组

  • concat()
    用来合并两个或多个数组,返回新数组
    let arr1 = [1, 2];
    let arr2 = [3, 4];
    let newArr = arr1.concat(arr2); // newArr = [1, 2, 3, 4]
    

2. 裁切数组

  • slice()
    返回数组的一部分原数组不发生改变。
    let arr = [1, 2, 3, 4];
    let newArr = arr.slice(1, 3); // newArr = [2, 3]
    

3. 数组转换为字符串

  • toString()
    数组转换为字符串,元素之间用逗号分隔

    let arr = [1, 2, 3]; let str = arr.toString(); // str = "1,2,3"
  • join()
    用指定的字符连接数组中的元素,默认分隔符是逗号。

    let arr = [1, 2, 3];
    let str = arr.join('-'); // str = "1-2-3"
    

4. 遍历数组

  • forEach()
    遍历数组,对每个元素执行给定的回调函数。

    let arr = [1, 2, 3]; arr.forEach(item => console.log(item)); // 输出 1, 2, 3
  • map()
    遍历数组并返回一个新的数组,其中包含回调函数的返回值。

    let arr = [1, 2, 3]; let newArr = arr.map(item => item * 2); // newArr = [2, 4, 6]
  • filter()
    遍历数组,返回满足条件的元素组成的新数组

    let arr = [1, 2, 3, 4]; let newArr = arr.filter(item => item > 2); // newArr = [3, 4]
  • every()
    判断数组中所有元素是否满足条件返回布尔值

    let arr = [1, 2, 3]; let result = arr.every(item => item > 0); // result = true
  • some()
    判断数组中是否有元素满足条件返回布尔值

    let arr = [1, 2, 3];
    let result = arr.some(item => item > 2); // result = true
    

5. 归并数组

  • reduce()
    对数组进行归并操作,返回最终的计算结果

    let arr = [1, 2, 3]; let result = arr.reduce((acc, item) => acc + item, 0); // result = 6
  • reduceRight()
    从右到左进行归并操作,返回最终的计算结果

    let arr = [1, 2, 3];
    let result = arr.reduceRight((acc, item) => acc + item, 0); // result = 6
    

6. 查找元素

  • indexOf()
    返回数组中某个元素第一次出现的索引,不存在则返回 -1。

    let arr = [1, 2, 3]; let index = arr.indexOf(2); // index = 1
  • lastIndexOf()
    从数组的末尾开始查找,返回某个元素最后一次出现的索引,不存在则返回 -1。

    let arr = [1, 2, 3, 2]; let index = arr.lastIndexOf(2); // index = 3
  • includes()
    判断数组是否包含某个指定的元素,返回布尔值

    let arr = [1, 2, 3]; let result = arr.includes(2); // result = true
  • find()
    返回数组中第一个满足条件元素,不满足条件则返回 undefined

    let arr = [1, 2, 3]; let result = arr.find(item => item > 2); // result = 3
  • findIndex()
    返回数组中第一个满足条件的元素的索引,不满足条件则返回 -1。

    let arr = [1, 2, 3];
    let index = arr.findIndex(item => item > 2); // index = 2
    

7. 数组去重和展平

  • flat()
    将嵌套的数组“拉平”,返回一个新的数组

    let arr = [1, [2, 3], [4, [5, 6]]]; let newArr = arr.flat(); // newArr = [1, 2, 3, 4, [5, 6]]
  • flatMap()
    先使用 map() 映射数组,再使用 flat() 将结果“拉平”。

    let arr = [1, 2, 3];
    let newArr = arr.flatMap(item => [item, item *

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值