JS:36种原生JS数组方法(8种改变原数组方法,28种不涉及数组改变的方法)

news2025/1/17 3:03:47

一、改变原数组方法

1.push()

作用:向数组的末尾添加一个或多个元素

返回:添加后数组的长度。

    <script>
      let arr = [1, 2, 3];
      console.log(arr.push(4)); //4
      console.log(arr); //[1, 2, 3, 4]
      console.log(arr.push(2, 4)); //6
      console.log(arr); //[1, 2, 3, 4, 2, 4]
    </script>

2.pop()

作用:删除数组的最后一个元素。

返回:最后一个元素

    <script>
      let arr = [1, 2, 3];
      console.log(arr.pop()); //3
      console.log(arr); //[1, 2]
    </script>

3.unshift()

作用:向数组的开头添加一个或多个元素。

返回:添加后数组的长度。

    <script>
      let arr = [1, 2, 3];
      console.log(arr.unshift(4)); //4
      console.log(arr); //[4, 1, 2, 3]
      console.log(arr.unshift(5, 6)); //6
      console.log(arr); //[5, 6, 4, 1, 2, 3]
    </script>

4.shift()

作用:删除数组的第一个元素。

返回:删除的元素。

    <script>
      let arr = [1, 2, 3];
      console.log(arr.shift()); //1
      console.log(arr); //[2, 3]
    </script>

5.splice()

作用:替换原数组中的元素

返回:被替换掉的元素

    <script>
      let arr = [1, 2, 3, 4, 5];
//splice(1, 2, "a", "b")中的1,2代表元素组要替换的元素的下标,"a","b"代表用于替换的元素
      console.log(arr.splice(1, 2, "a", "b"));//[2, 3]
      console.log(arr);//[1, "a", "b", 4, 5]
    </script>

6.reverse()

作用:颠倒数组中元素的顺序。

返回:颠倒后的数组。

    <script>
      let arr = [1, 2, 3];
      console.log(arr.reverse());//[3, 2, 1]
      console.log(arr);//[3, 2, 1]
    </script>

7.sort()

作用:对数组的元素进行排序,默认排序顺序是根据字符串Unicode码点。

返回:排序好的数组

    <script>
      let arr = [6, 1, 4, 1, 2, 9];
      // 正序排序
      console.log(arr.sort()); //[1, 1, 2, 4, 6, 9]
      console.log(arr); //[1, 1, 2, 4, 6, 9]
      // 逆序排序
      console.log(arr.sort((a, b) => b - a)); // 输出:[9, 6, 4, 2, 1, 1]
      console.log(arr); // 输出:[9, 6, 4, 2, 1, 1]
    </script>t>

8.copyWithin()

作用:浅复制数组的一部分到同一数组中的另一个位置。

返回:修改后的数组引用

<script>
      let array1 = [1, 2, 3, 4, 5];

      // 将位置 3 到 4 的元素复制到位置 0
      console.log(array1.copyWithin(0, 3, 4));
      // 输出: [4, 2, 3, 4, 5]

      // 负数索引表示从数组末尾开始计算
      let array2 = [1, 2, 3, 4, 5];

      // 将位置 -2 到 -1 的元素复制到位置 0
      console.log(array2.copyWithin(0, -2, -1));
      // 输出: [4, 2, 3, 4, 5]

      // 如果 start 大于 end,则不复制任何元素
      let array3 = [1, 2, 3, 4, 5];

      // 尝试将位置 3 到 2 的元素复制到位置 0(不会复制任何元素)
      console.log(array3.copyWithin(0, 3, 2));
      // 输出: [1, 2, 3, 4, 5]
      // 如果 target 在 start 和 end 之间,则复制的结果会覆盖 target 位置的元素
      let array4 = [1, 2, 3, 4, 5];

      // 将位置 1 到 4 的元素复制到位置 1
      console.log(array4.copyWithin(1, 1, 4));
      // 输出: [1, 2, 3, 4, 4]
    </script>

休息一下吧

二、不改变原数组方法

1.concat()

作用:合并两个或多个数组

返回:合并后的新数组

    <script>
      let arr1 = [1, 2, 3];
      let arr2 = [4, 5, 6];
      console.log(arr1.concat(arr2)); //[1, 2, 3, 4, 5, 6]
      console.log(arr1); //[1, 2, 3]
      console.log(arr2); //[4, 5, 6]
    </script>

2.slice()

作用:提取某个范围内的数组元素

返回:一个包含提取的元素的新数组

    <script>
      let arr = [1, 2, 3, 4, 5];
//arr.slice(1, 4)提取的元素从下标1开始,包含下标1。从下标4结束,不包含下标4
      console.log(arr.slice(1, 4)); //[2, 3, 4]
      console.log(arr); //[1, 2, 3, 4, 5]
    </script>

3.map()

作用:对数组每个元素分别调用

返回:一个调用完成后的新数组

    <script>
      let arr = [1, 2, 3];
      console.log(arr.map((x) => x * 2)); //[2, 4, 6]
      console.log(arr); // [1, 2, 3]
    </script>

4.fillter()

作用:筛选出符合条件的元素

返回:包含所有符合条件的元素的新数组

    <script>
      let arr = [1, 2, 3, 4, 5];
      console.log(arr.filter((x) => x > 3));//[4, 5]
      console.log(arr);//[1, 2, 3, 4, 5]
    </script>

5.forEach()

作用:遍历数组中每个元素并执行一次提供的操作

返回:无反回值

    <script>
      let arr = [1, 2, 3, 4, 5];
      arr.forEach(
        (item) => console.log(item + 2) // 3 4 5 6 7
      );
      console.log(arr); // [1, 2, 3, 4, 5]
    </script>

6.some()

作用:检查数组中是否有至少一个元素满足提供的条件

返回:true或false

    <script>
      let arr = [1, 2, 3];
      console.log(arr.some((x) => x > 2)); // true
      console.log(arr.some((x) => x > 3)); // false
      console.log(arr); // [1, 2, 3]
    </script>

7.every()

作用:检查数组中是否所有元素都满足提供的条件

返回:true或false

    <script>
      let arr = [1, 2, 3];
      console.log(arr.every((x) => x > 0)); // true
      console.log(arr.every((x) => x > 2)); // false
      console.log(arr); // [1, 2, 3]
    </script>

8.find(),findLast()

find

作用:找到数组中第一个满足提供的条件的元素

返回:找到的满足条件的第一个元素的值或undefined

    <script>
      let arr = [1, 2, 3];
      console.log(arr.find((x) => x > 0)); // 1
      console.log(arr.find((x) => x > 3)); // undefined
      console.log(arr); // [1, 2, 3]
    </script>

findLast

作用:找到数组中最后一个满足提供的条件的元素

返回:找到的满足条件的最后一个元素的值或undefined

    <script>
      let arr = [1, 2, 3];
      console.log(arr.findLast((x) => x > 0)); // 3
      console.log(arr.findLast((x) => x > 3)); // undefined
      console.log(arr); // [1, 2, 3]
    </script>

9.includes()

作用:用来判断一个数组是否包含一个指定的值

返回:true或false

    <script>
      let arr = [1, 2, 3, NaN];
      console.log(arr.includes(1)); // true
      console.log(arr.includes(4)); // false
      console.log(arr.includes(NaN)); // true
      console.log(arr); // [1, 2, 3,NaN]
    </script>

10.join()

作用:数组转字符串

返回:字符串

    <script>
      let arr = [1, 2, 3];
      console.log(arr.join(",")); //1,2,3
      console.log(arr);//[1, 2, 3]
    </script>

11.toString(),toLocaleString()

作用:数组转字符串

返回:字符串

    <script>
      let arr = new Date();
      console.log(arr.toLocaleString()); // 输出:"2024/3/13 15:36:59"
      console.log(arr.toString()); // 输出:"Wed Mar 13 2024 15:36:59 GMT+0800 (中国标准时间)"
      let arr2 = [1, 2, 3];
      console.log(arr2.toString()); // 输出:"1,2,3"
      console.log(arr2.toLocaleString()); // 输出:"1,2,3"
    </script>

不同点:toLocaleString()会根据运行代码的环境的本地特定规则来格式化数组元素

12.flat()

作用:指定深度遍历数组

返回:遍历后的新数组

    <script>
      let arr = [1, [2, 3], [4, [5, 6]]];
      console.log(arr.flat(0)); // [1, [2, 3], [4, [5, 6]]]
      console.log(arr.flat()); // [1, 2, 3, 4, [5, 6]]
      console.log(arr.flat(2)); // [1, 2, 3, 4, 5, 6]
      console.log(arr); // [1, [2, 3], [4, [5, 6]]]
    </script>

13.flatMap()

作用:映射每个元素,然后将结果压平成一个新数组

返回:按照条件生成的新数组

    <script>
      const arr = [1, 2, 3];
      //将arr进行映射,每个元素映射为一个数组,然后将这些数组展开
      console.log(arr.flatMap((x) => [x, x * 2])); // 输出 [1, 2, 2, 4, 3, 6]
      console.log(arr); // 输出 [1, 2, 3]
    </script>

14.entries(), keys(), values()

作用:遍历数组

返回:一个迭代器,包含该数组的键、值或键值对。

entries()同时获取键和值

keys():只获取键

values():只获取值

    <script>
      const arr = ["a", "b", "c"];
      for (const [index, value] of arr.entries()) {
        console.log(index, value); // 输出:0 'a',1 'b',2 'c'
      }
      for (const index of arr.keys()) {
        console.log(index); // 输出:0,1,2
      }
      for (const value of arr.values()) {
        console.log(value); // 输出:'a','b','c'
      }
      console.log(arr);// 输出:['a', 'b', 'c']
    </script>

15.reduce(),reduceRight()

reduce

作用:对数组中的每个元素执行一个函数(升序执行),将其结果汇总为单个返回值。

返回:累计处理的结果。

    <script>
      let arr = [1, 2, 3, 4];
      console.log(
        arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0)
      ); // 输出:10
      console.log(arr);// 输出:[1, 2, 3, 4]
    </script>

reduceRight

作用:对数组中的每个元素执行一个函数(降序执行),将其结果汇总为单个返回值。

返回:累计处理的结果

    <script>
      let arr = [1, 2, 3, 4];

      console.log(
        arr.reduceRight(
          (accumulator, currentValue) => accumulator + currentValue,
          0
        )
      ); // 输出:10

      console.log(arr); // 输出:[1, 2, 3, 4]
    </script>

16.indexOf() ,lastIndexOf()

作用:查找数组中指定元素的第一个(或最后一个)出现的索引位置。

返回:找到的元素索引,如果没有找到则返回-1。

    <script>
      let arr = [1, 2, 3, 2];
      console.log(arr.indexOf(2)); // 输出:1
      console.log(arr.lastIndexOf(2)); // 输出:3
      console.log(arr); // 输出:[1, 2, 3, 2]
    </script>

17.findIndex()

作用:查找数组中第一个满足提供的测试函数条件的元素的索引。

返回:找到元素的索引,否则返回-1。

    <script>
      let arr = [1, 2, 3];
      console.log(arr.findIndex((x) => x === 2)); // 输出:1
      console.log(arr); // 输出:[1, 2, 3]
    </script>

18.isArray()

作用:检测是否为数组。

返回:true或false。

    <script>
      const arr = [1, 2, 3];
      console.log(Array.isArray(arr)); // 输出:true
      const arr2 = { arr: arr };
      console.log(Array.isArray(arr2)); // 输出:false
    </script>

19.from() , of()

Array.from():可以从类数组对象或可迭代对象创建一个新的数组。

Array.of():用于创建一个具有可变数量参数的新数组。

返回:创建的新数组

    <script>
      console.log(Array.from("foo")); // 输出:['f', 'o', 'o']
      console.log(Array.of(1, 2, 3)); // 输出:[1, 2, 3]
    </script>

20.fill()

作用:填充数组的一部分或全部元素为一个固定值。

返回:一个新数组

    <script>
      console.log(new Array(5).fill(0));//[0,0,0,0,0]
    </script>

21.at()

作用:通过索引直接读取数组元素

返回:读到的元素

    <script>
      let myArray = ["apple", "banana", "cherry"];
      console.log(myArray.at(0)); // 输出:"apple"
      console.log(myArray.at(-1)); // 输出:"cherry"
    </script>

觉得有用就点个赞吧!

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

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

相关文章

cad转shp再转3dtiles生成白模

1、准备CAD数据 2、arcgis中添加cad数据 添加面 cad中的标高字段是能带进arcgis中的&#xff0c;如果这个数据是建筑高度&#xff0c;可以直接用了 3、转shp 4、shp转3dtiles白模 cesiumlab中shp转3dtiles白模效果一

新零售SaaS架构:什么是线上商城系统?

零售商家为什么要建设线上商城 传统的实体门店服务范围有限&#xff0c;只能吸引周边500米内的消费者。因此&#xff0c;如何拓展服务范围&#xff0c;吸引更多消费者到店&#xff0c;成为了店家迫切需要解决的问题。 缺乏忠实顾客&#xff0c;客户基础不稳&#xff0c;往往是…

buuctf warmup

1.代码审计&#xff1a; <?phphighlight_file(__FILE__);class emmm //定义了一个类{public static function checkFile(&$page) 类里面又申明创建了一个函数{$whitelist ["source">"source.php","…

安装汇春MDTIDE以及HI-TECH PICCv9.83(PICC语言编译器)

最近了解了汇春一款8位通用型MCU----MDT10F684&#xff0c;所以这里安装一下IDE以及配置一下环境。 1.安装汇春MDTIDE 去到官网下载对应的开发包&#xff0c;我不知道里面内容是否一致。 Flash/MTP MCU (yspringtech.com) 不要点说明书下载&#xff0c;点了没反应&#xff0…

借助ChatGPT提高编程效率指南

PS: ChatGPT无限次数&#xff0c;无需魔法&#xff0c;登录即可使用,网页打开下面 一、借助ChatGPT提高编程效率指南 随着计算机技术的飞速发展&#xff0c;编程已经成为了现代社会中一个非常重要的技能。对于许多人来说&#xff0c;编程不仅是一项工作技能&#xff0c;而且是…

docker之自己制作jdk镜像

一&#xff0c;下载想要制作的镜像的对应jdk&#xff08;自行下载&#xff09;&#xff0c;本文使用jdk17&#xff08;因为自己的springboot项目时在jdk17下开发的&#xff0c;悲&#xff01;&#xff01;&#xff01;&#xff0c;再加上没有在官网上找到对应镜像&#xff0c;只…

ubuntu22.04 在wifi网络正常使用的情况下创建热点连接

ubuntu22.04 在wifi网络正常使用的情况下创建热点连接 在ubuntu22.04版本中正常通过设置打开wifi热点会取消正常的wifi网络连接 接下来让我们一起尝试在wifi网络正常的情况下创建热点连接 查看硬件是否支持 iw list | grep AP #查看是否支持AP模式 Device supports AP-side…

小米官网登录注册的滑动效果

小米官网登录注册的滑动效果 登录组成页面 <div class"client"><div class"userbox"><div class"title"><a href"javascript:;" class"active" id"DL">登录</a><a href&quo…

250+可用的 AI 资源网站

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 这里是关于AI网站的一份资源列表。欢迎访问该链…

message: apoc.meta.data is unavailable

报错内容 Traceback (most recent call last):File "/langchain-master/templates/neo4j-semantic-ollama/ingest.py", line 9, in <module>graph Neo4jGraph()File "/root/anaconda3/envs/sakura/lib/python3.9/site-packages/langchain_community/gra…

智慧农业新篇章:DSSAT模型、APSIM模型、WOFOST与PCSE模型综合应用,引领作物生长模拟与产量预测新潮流

目录 ★WOFOST模型与PCSE模型应用 ★基于R语言APSIM模型进阶应用与参数优化、批量模拟 ★最新DSSAT作物模型建模方法及应用 ★基于Python语言快速批量运行DSSAT模型及交叉融合、扩展应用 ★R语言与作物模型&#xff08;以DSSAT模型为例&#xff09;融合应用 ★遥感数据与…

酷开科技以消费者需求为导向冲刺OTT行业的星辰大海

通过大屏营销、互动营销等方式&#xff0c;提升品牌认知度和市场竞争力。酷开科技始终坚持以消费者的需求为导向&#xff0c;致力于为品牌方和消费者搭建高效、准确的沟通桥梁&#xff0c;开创OTT大屏营销新纪元。 伴随技术发展&#xff0c;智能电视已经从“尝鲜”变成了主流产…

C# Web自动化--Selenium入门

安装依赖库 需要引用的核心库是Selenium.RC&#xff0c;Selenium.Support&#xff0c;Selenium.WebDriver 然后再需要引用 浏览器驱动库&#xff0c;这里我以IE浏览器为例&#xff0c;Chrome使用方式跟IE是一样的&#xff0c;程序包名称为Selenium.WebDriver.ChromeDriver。 …

静电ESD整改:原因、影响与解决方案详解?|深圳比创达电子

静电&#xff08;ESD&#xff09;是在日常生活和工作中常见的现象&#xff0c;但它可能对电子设备和器件造成严重的损坏。本文将介绍静电ESD的定义、原因、影响以及解决方案&#xff0c;帮助大家更好地了解ESD问题&#xff0c;并采取相应的整改措施。 一、静电ESD的定义 静电…

技术驱动校园招聘:Java+SpringBoot+Vue的实践之旅

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

【Linux操作系统】:Linux进程概念(2)

一、Z(zombie)-僵尸进程 1.僵尸进程概念 故事 张三每天都有跑步的习惯&#xff0c;这一天他和往常一样跑步&#xff0c;跑了两三圈&#xff0c;突然跑在它前面的一个人倒在地上不动了&#xff0c;作为热心市民张三赶紧报警并且拨打120。很快120就来了&#xff0c;但是没过几分…

Docker单机下的容器网络管理

Docker容器网络管理 容器网络类型 Docker安装以后&#xff0c;会在我们的主机上创建三个网络 docker network ls可以看到有bridge、host和none三种网络类型 我们先把ubuntu的网络环境配置一下 docker run -it ubuntu apt update apt install net-tools iputils-ping curl这…

移速u盘怎么恢复彻底删除的文件,移速u盘彻底删除的文件如何恢复

移速u盘怎么恢复彻底删除的文件&#xff1f;在日常使用中&#xff0c;我们经常会遇到需要删除U盘中的文件的情况。然而&#xff0c;有时候我们可能会不小心将重要的文件彻底删除&#xff0c;导致数据的丢失。对于移速U盘用户来说&#xff0c;如何恢复彻底删除的文件成为了一个备…

江科大stm32学习笔记——【6-1】TIM定时中断

一.定时器 1.类型 STM32F103C8T6定时器资源&#xff1a;TIM1,TIM2,TIM3,TIM4 我们这次用通用定时器 2.基本定时器 预分频器对来自RCC_TIMxCLK的72MHz进行预分频&#xff0c;比如写0就是不分频或1分频&#xff0c;输出频率输入频率72MHz。写1就是2分频&#xff0c;输出频率输…

Java复习01 集合概念

Java复习01 集合 在Java中&#xff0c;集合&#xff08;Collections&#xff09;是一种用来存储一组对象的结构。想象一下有一个装东西的箱子&#xff0c;这个箱子可以装很多不同类型的东西&#xff0c;例如书、DVD或者玩具。Java的集合也是这样&#xff0c;但是它专门用来装载…