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

一、改变原数组方法

1.push()

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

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

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

2.pop()

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

返回:最后一个元素

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

3.unshift()

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

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

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

4.shift()

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

返回:删除的元素。

    <script>let arr = [1, 2, 3];console.log(arr.shift()); //1console.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 的元素复制到位置 0console.log(array1.copyWithin(0, 3, 4));// 输出: [4, 2, 3, 4, 5]// 负数索引表示从数组末尾开始计算let array2 = [1, 2, 3, 4, 5];// 将位置 -2 到 -1 的元素复制到位置 0console.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 的元素复制到位置 1console.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结束,不包含下标4console.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)); // trueconsole.log(arr.some((x) => x > 3)); // falseconsole.log(arr); // [1, 2, 3]</script>

7.every()

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

返回:true或false

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

8.find(),findLast()

find

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

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

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

findLast

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

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

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

9.includes()

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

返回:true或false

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

10.join()

作用:数组转字符串

返回:字符串

    <script>let arr = [1, 2, 3];console.log(arr.join(",")); //1,2,3console.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)); // 输出:10console.log(arr);// 输出:[1, 2, 3, 4]</script>

reduceRight

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

返回:累计处理的结果

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

16.indexOf() ,lastIndexOf()

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

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

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

17.findIndex()

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

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

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

18.isArray()

作用:检测是否为数组。

返回:true或false。

    <script>const arr = [1, 2, 3];console.log(Array.isArray(arr)); // 输出:trueconst 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.hqwc.cn/news/536713.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel判断CD两列在EF两列的列表中是否存在

需求 需要将CD两列的ID和NAME组合起来&#xff0c;查询EF两列的ID和NAME组合起来的列表中是否存在&#xff1f; 比如&#xff0c;判断第二行的“123456ABC”在EF的第二行到第四行中是否存在&#xff0c;若存在则显示Y&#xff0c;不存在则显示N 实现的计算公式 IF(ISNUMBER…

全视智慧机构养老解决方案,以科技守护长者安全

2024年2月28日凌晨1时许&#xff0c;在上海浦东大道的一家养护院四楼杂物间内发生了一起火灾事故。尽管火势不大&#xff0c;过火面积仅为2平方米&#xff0c;但这场小火却造成了1人死亡和3人受伤的悲剧。这一事件再次提醒我们&#xff0c;养老院作为老年人聚集的场所&#xff…

plt保存PDF矢量文件中嵌入可编辑字体(可illustrator编辑)

背景&#xff1a; 用默认 plt.savefig() 保存图片&#xff0c;图中文字是以瞄点保存&#xff0c;而不是以文字格式。在编辑矢量图中&#xff0c;无法调整文字大小和字体。 方法&#xff1a; import matplotlib.pyplot as plt import numpy as np# ------输出的图片为illustr…

SSA-LSTM多输入分类预测 | 樽海鞘优化算法-长短期神经网络 | Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&am…

F.岛屿个数【蓝桥杯】/dfs+环

岛屿个数 小蓝得到了一副大小为 M N 的格子地图&#xff0c;可以将其视作一个只包含字符‘0’&#xff08;代表海水&#xff09;和 ‘1’&#xff08;代表陆地&#xff09;的二维数组&#xff0c;地图之外可以视作全部是海水&#xff0c;每个岛屿由在上/下/左/右四个方向上相…

191基于matlab的信号谱估计

基于matlab的信号谱估计&#xff0c;间接法双谱估计 &#xff0c;bispeci返回用间接法从有限个观测信号中估计出的双谱bispec&#xff0c;并且用等高线图显示。直接法双谱估计 &#xff0c;bispecd返回估计双谱矩阵&#xff0c;原点在中心&#xff0c;轴的方向是向下与向右 。程…

2024腾讯云轻量主机地域怎么选择?上海/北京/广州哪个地域好?

腾讯云轻量应用服务器地域如何选择&#xff1f;地域就近选择&#xff0c;北方选北京地域、南方选广州地域&#xff0c;华东地区选上海地域。广州上海北京地域有什么区别&#xff1f;哪个好&#xff1f;区别就是城市地理位置不同&#xff0c;其他的差不多&#xff0c;不区分好坏…

AI论文速读 | 计时器(Timer):用于大规模时间序列分析的Transformer

题目&#xff1a; Timer: Transformers for Time Series Analysis at Scale 作者&#xff1a;Yong Liu,&#xff08;刘雍&#xff09;, Haoran Zhang&#xff08;张淏然&#xff09;, Chenyu Li&#xff08;李晨宇&#xff09;, Jianmin Wang&#xff08;王建民&#xff09;, …

pycharm 历史版本下载地址

pycharm 历史版本下载地址 老版本能用就行&#xff0c;不需要搞最新的&#xff0c;当然了&#xff0c;有些小伙伴就是喜欢新的&#xff08;最先吃螃蟹&#xff09; 博主就不搞最新了&#xff0c;哈哈 上菜&#xff1a; https://www.jetbrains.com/pycharm/download/other.html…

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

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

数字人基础 | 3D手部参数化模型2017-2023

楔子: 2017年年底的泰国曼谷, SIGGRAPH Asia会议上, 来自马普所的 Javier Romero, Dimitrios Tzionas(两人都是 Michael J. Black的学生)发布了事实性的手部参数化模型标准: MANO [1]。 MANO的诞生意味着 Michael J. Black团队在继人体参数化模型 SMPL后, 事实性的将能够表达人…

Python导入类说一说

要在Python中导入一个类&#xff0c;需要使用import关键字。 详细去看下面的代码 1、多例类 class Restaurant:餐馆类def __init__(self,restaurant_name,cuisine_type):#类的属性self.restaurant_name restaurant_nameself.cuisine_type cuisine_type# self.stregth_leve…