JS数组常用的20种方法详解(每一个方法都有例子,超全面,超好理解的教程,干货满满)

news2024/9/23 17:11:19

目录

1.会改变原数组的方法(7种)

1.push()

2.pop()

3.unshift()

4.shift()

5.reverse()

6.sort()

7.splice()

2.不改变原数组的方法(13种,返回的新数组是从原数组浅拷贝来的)

1.concat()

2.join()

3.slice()

4.indexOf()

5.forEach()

6.map()

7.filter()

8.every()

9.some()

10.find()

11.findIndex()

12.includes()

13.reduce()


  • 理解一个API最重要的是看它的作用,参数,返回值。
  • 每一个API这三个方面我都会先说明,并在后面的例子中体现出来。
  • 看完这篇文章,在写代码或者面试的时候你还只会那几种屈指可数的方法吗?
  • 赶快学起来吧!

1.会改变原数组的方法(7种)

1.push()

  • 作用:尾部添加元素
  • 参数:添加的元素
  • 返回值:操作完成后数组的长度
      let arr = [10, 20, 30, 40];
      let response = arr.push(20, 50);
      console.log(arr);
      console.log(response);

2.pop()

  • 作用:尾部删除一个元素
  • 参数:无
  • 返回值:删除的那个元素
      let arr = [10, 20, 30, 40];
      let response = arr.pop();
      console.log(arr);
      console.log(response);

3.unshift()

  • 作用:头部添加元素
  • 参数:添加的元素
  • 返回值:操作完成后数组的长度
      let arr = [1, 2, 3, 4];
      let response = arr.unshift(0, 1, "123", true, { a: 100 });
      console.log(arr);
      console.log(response);

4.shift()

  • 作用:头部删除一个元素
  • 参数:无
  • 返回值:删除的那个元素
      let arr = [1, 2, 3, 4];
      let response = arr.shift();
      console.log(arr);
      console.log(response);

5.reverse()

  • 作用:反转数组
  • 参数:无
  • 返回值:操作完成后的数组
      let arr = [1, 2, 3, 4];
      let response = arr.reverse();
      console.log(arr);
      console.log(response);

6.sort()

  • 作用:排序
  • 参数:无(默认从小到大排序)或函数
  • 返回值:操作完成后的数组
      let arr = [-1, 1, 5, 3, 4, 6, 2, 7];
      //默认
      let response = arr.sort();
      console.log(arr);
      console.log(response);
      //从小到大排序
      arr.sort((a, b) => {
        return a - b;
      });
      console.log(arr);
      //从大到小排序
      arr.sort((a, b) => {
        return b - a;
      });
      console.log(arr);

7.splice()

  • 作用:在指定索引处删除,添加元素
  • 参数:(索引,删除元素的个数,添加的元素)。第三个参数可选
  • 返回值:删除的元素(数组)
      let arr = [-1, 1, 5, 3, 4, 6, 2, 7];
      let response = arr.splice(2, 2);
      console.log(arr);
      console.log(response);

      let arr2 = [-1, 1, 5, 3, 4, 6, 2, 7];
      let response2 = arr2.splice(2, 0, 8);
      console.log(arr2);
      console.log(response2);

2.不改变原数组的方法(13种,返回的新数组是从原数组浅拷贝来的)

1.concat()

  • 作用:合并多个数组
  • 参数:(数组)
  • 返回值:返回一个新数组
      let arr = [1, 2, 3, 4, 5];
      let arr2 = ["zs", "ls", "ww", 1, 2];
      let res = arr.concat(arr2);
      console.log(arr);
      console.log(res);

2.join()

  • 作用:把数组转化成以指定分隔符连接的字符串
  • 参数:(分隔符,或无参数(默认的分隔符是' , '))
  • 返回值:字符串
      let arr = [1, 2, 3, 4, 5];
      let res = arr.join("--");
      let res2 = arr.join();
      console.log(arr);
      console.log(res);
      console.log(res2);

3.slice()

  • 作用:截取数组
  • 参数:(开始索引,结束索引)。截取的元素包括开始索引,不包括结束索引
  • 返回值:新数组
      let arr = [1, 2, 3, 4, 5];
      let res = arr.slice(1, 3);
      console.log(arr);
      console.log(res);

4.indexOf()

  • 作用:查找元素在数组中的索引
  • 参数:(查找的元素)
  • 返回值:索引值。数组中没有此元素则返回-1
      let arr = [1, 2, 3, 4, 5];
      let res = arr.indexOf(4);
      let res2 = arr.indexOf(6);
      console.log(arr);
      console.log(res);
      console.log(res2);

5.forEach()

  • 作用:遍历数组
  • 参数:函数(函数中依次传入的参数:数组中的每一项,每一项对应的索引)
  • 返回值:无
      let arr = [1, 2, 3, 4, 5];
      let res = arr.forEach((item, index) => {
        console.log(item, "-", index);
      });
      console.log(arr);
      console.log(res);

6.map()

  • 作用:映射数组(必须通过return关键字来映射)
  • 参数:函数(函数中依次传入的参数:数组中的每一项,每一项对应的索引)
  • 返回值:新数组
      let arr = [1, 5, 3, 4, 6];
      let res = arr.map((item, index) => {
        let a = item + index;
        return a;
      });
      console.log(arr);
      console.log(res);

7.filter()

  • 作用:过滤筛选数组(必须要用return关键字)
  • 参数:函数(函数中依次传入的参数:数组中的每一项,每一项对应的索引)
  • 返回值:新数组
      let arr = [1, 5, 3, 4, 6];
      let res = arr.filter((item, index) => {
        //第一种方式:
        // if (item >= 4) {
        //   return true;
        // }
        //第二种方式:
        return item >= 4;
        //两种方式效果都一样
      });
      console.log(arr);
      console.log(res);

8.every()

  • 作用:判断数组中每个元素是否都满足指定的条件(必须要用return关键字)
  • 参数:函数(函数中依次传入的参数:数组中的每一项,每一项对应的索引)
  • 返回值:布尔值
      let arr = [1, 2, 3, 4, 5];
      let res = arr.every((item, index) => {
        return item > 0;
      });
      console.log(arr);
      console.log(res);

      let res2 = arr.every((item, index) => {
        return item > 3;
      });
      console.log(arr);
      console.log(res2);

9.some()

  • 作用:判断数组中是否有元素满足指定的条件(必须要用return关键字)
  • 参数:函数(函数中依次传入的参数:数组中的每一项,每一项对应的索引)
  • 返回值:布尔值
      let arr = [1, 2, 3, 4, 5];
      let res = arr.some((item, index) => {
        return item > 2;
      });
      console.log(arr);
      console.log(res);

      let res2 = arr.some((item, index) => {
        return item > 5;
      });
      console.log(arr);
      console.log(res2);

10.find()

  • 作用:获取数组中满足指定条件的第一个元素(必须要用return关键字)
  • 参数:函数(函数中依次传入的参数:数组中的每一项,每一项对应的索引)
  • 返回值:满足指定条件的第一个元素。没有满足条件的返回undefined
      let arr = [1, 2, 3, 4, 5];
      let res = arr.find((item, index) => {
        return item > 3;
      });
      console.log(arr);
      console.log(res);

      let res2 = arr.find((item, index) => {
        return item > 5;
      });
      console.log(arr);
      console.log(res2);

11.findIndex()

  • 作用:获取数组中满足指定条件的第一个元素的索引(必须要用return关键字)
  • 参数:函数(函数中依次传入的参数:数组中的每一项,每一项对应的索引)
  • 返回值:索引值。没有满足条件的元素则返回-1
      let arr = [1, 2, 3, 4, 5];
      let res = arr.findIndex((item, index) => {
        return item > 2;
      });
      console.log(arr);
      console.log(res);

      let res2 = arr.findIndex((item, index) => {
        return item > 5;
      });
      console.log(arr);
      console.log(res2);

12.includes()

  • 作用:判断数组中是否包含指定的元素
  • 参数:指定的元素
  • 返回值:布尔值
      let arr = [1, 2, 3, 4, "ab", "bd"];
      console.log(arr.includes(2));
      console.log(arr.includes(5));
      console.log(arr.includes("ab"));
      console.log(arr.includes("c"));

13.reduce()

  • 作用:对数组的元素进行叠加操作(必须要用return关键字)
  • 参数:函数(函数中依次传入的参数:前一次操作返回的值,当前项,当前项的索引),第二个参数(作为pre的初始值,可选)
  • 返回值:最后一次遍历return的值
      let arr = [1, 2, 3, 4, 5];
      //不传第二个参数:pre的初始值是数组第一个元素,cur是第二个元素,index从1开始
      let res = arr.reduce((pre, cur, index) => {
        console.log(pre, cur, index);
        return pre + cur;
      });
      console.log(res);
      //传第二个参数:pre的初始值是传入的第二个参数,cur是第一个元素,index从0开始
      let res2 = arr.reduce((pre, cur, index) => {
        console.log(pre, cur, index);
        return pre + cur;
      }, -1);
      console.log(res2);
      //应用1
      //计算数组中每个元素出现的次数
      let arr2 = [1, "b", 1, "a", "b", 1, 2];
      let num = arr2.reduce((pre, cur, index) => {
        if (cur in pre) {
          pre[cur]++;
        } else {
          pre[cur] = 1;
        }
        return pre;
      }, {});
      console.log(num);
      //应用2
      //对数组中对象里的属性进行累加
      let arr3 = [
        {
          subject: "math",
          score: 10,
        },
        {
          subject: "chinese",
          score: 20,
        },
        {
          subject: "english",
          score: 30,
        },
      ];
      let sum = arr3.reduce((pre, cur, index) => {
        return pre + cur.score;
      }, 0);
      console.log(sum);

文章到这里就结束了,觉得有收获的可以点赞和收藏哦!也欢迎大家评论区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1244389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法通关村第十二关-白银挑战字符串经典题目

大家好我是苏麟 , 今天带来字符串相关的题目 . 大纲 反转问题字符串反转K个一组反转仅仅反转字母反转字符串中的单词 反转问题 字符串反转 描述 : 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s的形式给出。 题目 : LeetCode 344. 反转…

【MATLAB】全网入门快、免费获取、持续更新的科研绘图教程系列1

1 【MATLAB】科研绘图第一期点线图 %% Made by Lwcah %% 公众号:Lwcah %% 知乎、B站、小红书、抖音同名账号:Lwcah,感谢关注~ %% 更多MATLABSCI绘图教程敬请观看~%% 清除变量 clc; clear all; close all;%% 一幅图的时候figureWidth 8.5;figureHeight …

AI:87-基于深度学习的街景图像地理位置识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

VR云游:让旅游产业插上数字化翅膀,打造地方名片

自多地入冬降温以来,泡温泉成了许多人周末度假的选择,在气温持续走低的趋势下,温泉游也迎来了旺季;但是依旧有些地区温度依旧温暖,例如南京的梧桐美景也吸引了不少游客前去打卡,大家穿着汉服与金黄的树叶合…

【Hello Go】Go语言并发编程

并发编程 概述基本概念go语言的并发优势 goroutinegoroutine是什么创建goroutine如果主goroutine退出runtime包GoschedGoexitGOMAXPROCS channel无缓冲的channel有缓冲的channelrange和close单向channel 定时器TimerTicker Select超时 概述 基本概念 并行和并发概念 并行 &…

佳易王个体诊所病历登记系统查询软件教程

佳易王个体诊所病历登记系统查询软件教程 在开处方时可以随时查看该病人的历史病历。 软件功能: 1、配方模板:可以自由添加配方分类,预先设置药品配方,可以一键导入电子处方。 2、正常开药:可以灵活选择药品&#x…

什么是持续集成的自动化测试?

持续集成的自动化测试 如今互联网软件的开发、测试和发布,已经形成了一套非常标准的流程,最重要的组成部分就是持续集成(Continuous integration,简称CI,目前主要的持续集成系统是Jenkins)。 那么什么是持…

【图文详解】SiamFC++与图注意力的强强联合:单目标追踪系统

1.研究背景与意义 随着计算机视觉技术的不断发展,单目标追踪(Single Object Tracking, SOT)作为计算机视觉领域的一个重要研究方向,已经在许多实际应用中得到了广泛的应用。单目标追踪系统可以通过分析视频序列中的目标运动&…

【Typroa使用】Typroa+PicGo-Core(command line)+gitee免费图片上传配置

TyproaPicGo-Core(command line)gitee免费图片上传配置 本文是在win10系统下配置typroapicGo-Core(command line)gitee图片上传的教程。需要的环境和工具有: gitee账号,新建仓库及token令牌;已经安装了的typroa,需要0.9.98版本以上…

Python 字典(dict)基础学习

一、字典的基础定义(key:value)键值对 my_dict {"王力宏": 99, "周杰伦": 88, "林俊杰": 77} my_dict2 {} my_dict3 dict() print(my_dict) print(my_dict2) print(my_dict3) 字典基础定义 字典名 {key1:value1,key2:value2,key3:value3}…

shell 脚本的函数和数组

函数 —— 封装的一个公式:sin、cos、tan —— 函数为脚本的别名 —— 函数就是一个功能模块,在函数中写执行的命令即可;使用函数可以避免代码重复,增加可读性,简化脚本,使用函数可以将大的工程分割为若…

【C++初阶】STL详解(六)Stack与Queue的介绍与使用

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

UE5 中的computer shader使用

转载:UE5 中的computer shader使用 - 知乎 (zhihu.com) 目标 通过蓝图输入参数,经过Compture Shader做矩阵运算 流程 1. 新建插件 2. 插件设置 3. 声明和GPU内存对齐的参数结构 4. 声明Compture Shader结构 5. 参数绑定 6. 着色器实现 7. 分配 work gr…

【Spring】 IoCDI

回顾 企业命名规范 大驼峰:BookDao(首字母都大写) 类名 小驼峰:bookDao(第一个字母小写) 方法名 蛇形:book_dao(小写下划线_) 数据库 串形:book-dao(小写连字符-) 项目文件夹 各种注解 学习Spring MVC, 其实就是学习各种Web开发需要⽤的到注解 a. RequestMapping: 路由…

计算机中文编程工具构件之透明按钮,编程工具下载,零基础自学编程

计算机中文编程工具构件之透明按钮,编程工具下载,零基础自学编程 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件&am…

HashML——让更多企业读懂数据,用好AI

随着大模型技术的兴起,数据智能和AI正成为企业数字化转型的新驱动力。 酷克数据研发推出的新一代高级分析和数据科学工具箱HashML自推出以来,受到了众多企业和技术爱好者的广泛关注。在最近的直播中,我们邀请了HashData的数据科学工程师&…

目标检测算法 - YOLOv3

文章目录 1. Backbone Darknet-532. 整体架构3. 损失函数4. 训练过程5. 预测过程 YOLOv1、YOLOv2都是在CVPR这种正规的计算机视觉学术会议上发表的正式学术论文。 YOLOv3不算一篇严谨的学术论文,是作者随笔写的技术报告。 YOLOv3性能: 1. Backbone Dark…

七要素微气象仪气象数据监测助手

WX-WQX7 随着科技的发展,气象预测的准确性已成为人们日常生活的重要参考。而七要素微气象仪,作为新型的气象探测设备,以其精细化的数据测量和解析能力,正在改变我们的天气预测方式。 一、产品介绍 七要素微气象仪是一款集成了温…

STM32:基本定时器原理和定时程序

一、初识定时器TIM 定时器就是计数器,定时器的作用就是设置一个时间,然后时间到后就会通过中断等方式通知STM32执行某些程序。定时器除了可以实现普通的定时功能,还可以实现捕获脉冲宽度,计算PWM占空比,输出PWM波形&am…

TEMU平台商品欧盟站要求电子和电气产品提供CE-EMC(Electric)资质

CE-EMC认证是欧盟对于市场上销售的电子和电气产品所要求的一个重要认证标准。该认证指令规定了产品在电磁环境下的辐射和抗干扰性能要求,以确保产品在使用时不会对其他设备和系统产生干扰,并且能够正常工作,不受其他设备的干扰。 CE EMC认证…