js 数组有哪些方法

JavaScript 数组提供了许多内置方法来操作和处理数组。以下是一些常用的数组方法:

创建和操作数组的方法

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

    let arr = Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']
    
  2. Array.isArray():判断一个值是否为数组。

    Array.isArray([1, 2, 3]); // true
    
  3. Array.of():创建一个具有可变数量参数的新数组实例。

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

修改数组的方法

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

    let arr = [1, 2, 3];
    arr.push(4); // [1, 2, 3, 4]
    
  2. pop():移除数组末尾的一个元素,并返回该元素。

    let arr = [1, 2, 3];
    arr.pop(); // 3, arr 变为 [1, 2]
    
  3. shift():移除数组开头的一个元素,并返回该元素。

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

    let arr = [1, 2, 3];
    arr.unshift(0); // [0, 1, 2, 3]
    
  5. splice():通过删除或替换现有元素或添加新元素来修改数组。

    let arr = [1, 2, 3, 4];
    arr.splice(1, 2, 'a', 'b'); // [1, 'a', 'b', 4]
    
  6. concat():合并两个或多个数组,不改变现有数组,返回一个新数组。

    let arr1 = [1, 2];
    let arr2 = [3, 4];
    let arr3 = arr1.concat(arr2); // [1, 2, 3, 4]
    
  7. slice():返回一个从开始到结束(不包括结束)选择的数组的一部分,原数组不变。

    let arr = [1, 2, 3, 4];
    let newArr = arr.slice(1, 3); // [2, 3]
    

查找和遍历数组的方法

  1. forEach():对数组的每个元素执行一次提供的函数。

    let arr = [1, 2, 3];
    arr.forEach(num => console.log(num)); // 1, 2, 3
    
  2. map():创建一个新数组,其结果是该数组中的每个元素调用一个提供的函数后返回的结果。

    let arr = [1, 2, 3];
    let newArr = arr.map(num => num * 2); // [2, 4, 6]
    
  3. filter():创建一个新数组,其包含通过所提供函数实现的测试的所有元素。

    let arr = [1, 2, 3, 4];
    let newArr = arr.filter(num => num > 2); // [3, 4]
    
  4. reduce():对数组中的每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。

    let arr = [1, 2, 3, 4];
    let sum = arr.reduce((acc, num) => acc + num, 0); // 10
    
  5. find():返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined

    let arr = [1, 2, 3, 4];
    let found = arr.find(num => num > 2); // 3
    
  6. findIndex():返回数组中满足提供的测试函数的第一个元素的索引。否则返回 -1

    let arr = [1, 2, 3, 4];
    let index = arr.findIndex(num => num > 2); // 2
    
  7. some():测试数组中的某些元素是否通过了由提供的函数实现的测试。

    let arr = [1, 2, 3, 4];
    let hasLargeNumber = arr.some(num => num > 3); // true
    
  8. every():测试数组中的所有元素是否都通过了由提供的函数实现的测试。

    let arr = [1, 2, 3, 4];
    let allPositive = arr.every(num => num > 0); // true
    
  9. includes():判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false

    let arr = [1, 2, 3, 4];
    arr.includes(2); // true
    
  10. indexOf():返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回 -1

    let arr = [1, 2, 3, 4];
    arr.indexOf(3); // 2
    
  11. lastIndexOf():返回在数组中可以找到一个给定元素的最后一个索引,如果不存在,则返回 -1

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

其他有用的方法

  1. join():将数组的所有元素连接成一个字符串。

    let arr = [1, 2, 3];
    let str = arr.join('-'); // "1-2-3"
    
  2. reverse():反转数组中的元素顺序。

    let arr = [1, 2, 3];
    arr.reverse(); // [3, 2, 1]
    
  3. sort():对数组的元素进行排序并返回数组。

    let arr = [3, 1, 4, 2];
    arr.sort(); // [1, 2, 3, 4]
    
  4. fill():用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。

    let arr = [1, 2, 3, 4];
    arr.fill(0, 1, 3); // [1, 0, 0, 4]
    
  5. copyWithin():浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。

    let arr = [1, 2, 3, 4, 5];
    arr.copyWithin(0, 3); // [4, 5, 3, 4, 5]
    
  6. flat():按照一个可指定的深度递归地将数组展平,并返回一个新数组。

    let arr = [1, [2, [3, [4]]]];
    arr.flat(2); // [1, 2, 3, [4]]
    
  7. flatMap():首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。

    let arr = [1, 2, 3];
    arr.flatMap(x => [x, x * 2]); // [1, 2, 2, 4, 3, 6]
    

这些方法提供了丰富的功能来操作和处理数组,使得 JavaScript 中的数组操作变得非常方便和高效。

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

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

相关文章

Explain Python Machine Learning Models with SHAP Library

Explain Python Machine Learning Models with SHAP Library – Minimatech (能翻墙直接看原文) Explain Python Machine Learning Models with SHAP Library 11 September 2021Muhammad FawiMachine Learning Using SHapley Additive exPlainations …

用户管理相关命令(修改sudoer文件添加用户权限)visudo: /etc/sudoers: 权限不够

1.useradd <用户名>&#xff1a;用来新建一个用户&#xff08;-m&#xff1a;创建用户的家目录 -s&#xff1a;指定/bin/bash&#xff09; 2.userdel <用户名>&#xff1a;删除一个用户&#xff0c;还会存在家目录&#xff08;-r&#xff1a;删除用户的同时&…

jeecg在线表单开发模式保存表时报The jdbcUrl is Null, Cannot read database type

报错信息如图 原因分析 使用jeecg框架 数据库使用的是DM数据库&#xff0c;在JeecgSystemApplication中&#xff0c;使用了注解过滤DruidDataSourceAutoConfigure&#xff0c;配置文件使用的是多数据源的方式 会出现这种情况 源码分析 getOnlineDataBaseConfig方法的dataBa…

unity text根据文本内容自动设置高度

我们经常会遇到需要根据文字数量动态修改文本框高度的需求&#xff0c;我们可以使用文本的行数*每行的高度来计算文本框的高度&#xff0c;伪代码如下&#xff1a; int oneLineHight 50;// 每行的像素高度 private void ResetTextHight(string str) {//设置文字内容ShowText.…

Gson的常见用法

一引入依赖 <!-- json解析的工具包 --> <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version> </dependency> <!-- 主要为了代码简洁和日志打印 --> <…

怎么找抖音视频素材?在哪里找爆款热门的素材呢?

在短视频时代&#xff0c;拍摄和分享短视频已经成为一种潮流。但是&#xff0c;许多人都会面临一个问题&#xff0c;那就是——视频素材从哪里来&#xff1f;今天&#xff0c;我将为大家介绍几个优质的网站&#xff0c;让你的视频素材不再愁。 蛙学府&#xff1a;https://www.…

STM32项目分享:智慧农业(机智云)系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.c…

C++ 54 之 继承中同名的静态成员处理

#include <iostream> using namespace std;// 父类 class Base07{ public:static int m_a; // 静态成员&#xff0c;类内定义static void fun(){cout << "Base中的fun"<< endl;}static void fun(int a){cout << "Base中的fun(int a)&qu…

几个小创新模型,KAN组合网络(LSTM、GRU、Transformer)时间序列预测,python预测全家桶...

截止到本期&#xff0c;一共发了8篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.终于来了&#xff01;python机器学习预测全家桶 2.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&a…

旅行商问题要点和难点以及具体应用案例

旅行商问题(Travelling Salesman Problem, TSP)是一个经典的组合优化问题,涉及给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。这个问题在运筹学和理论计算机科学中非常重要,并且在多个领域有实际应用,如交通运输、电路板线路设计…

【MySQL】索引(上)

https://www.wolai.com/curry00/fzTPy3kSsMDEgEcdvo4G5w https://www.bilibili.com/video/BV1Kr4y1i7ru/?p69 https://jimhackking.github.io/%E8%BF%90%E7%BB%B4/MySQL%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/#%E7%B4%A2%E5%BC%95 索引是一种用于快速查询和检索数据的数据结构…

AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(流程优化)

系列篇章&#x1f4a5; No.文章1AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎的构建与初步实践2AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之GLM-4大模型技术的实践探索3AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之知乎网站数据获…

深入解析数据结构之B树:平衡树中的王者

在计算机科学中&#xff0c;数据结构是算法和程序设计的基础。而在众多数据结构中&#xff0c;B树作为一种平衡树&#xff0c;在数据库和文件系统中有着广泛应用。本文将详细介绍B树的概念、特点、操作、优缺点及其应用场景&#xff0c;帮助读者深入理解这一重要的数据结构。 …

linux笔记8--安装软件

文章目录 1. PMS和软件安装的介绍2. 安装、更新、卸载安装更新ubuntu20.04更新镜像源&#xff1a; 卸载 3. 其他发行版4. 安装第三方软件5. 推荐 1. PMS和软件安装的介绍 PMS(package management system的简称)&#xff1a;包管理系统 作用&#xff1a;方便用户进行软件安装(也…

窗口信息保存

读取 QSettings settings("MyOrganization", "MyApp"); QString savedText settings.value("lineEditText", "").toString(); _ui->lineEdit->setText(savedText); 写入 QSettings settings("MyOrganiz…

[leetcode 141环形链表]双指针解决环形链表

Problem: 141. 环形链表 文章目录 思路Code 思路 首先想到如果链表为空直接返回false 其次想到用双指针,一个一回走一步,另一个一回走两步 如果是环形,总有一个时刻,两指针会指向同一个节点,而且该结点不能为空(空是快指针遍历完单链表了) Code /*** Definition for singly-li…

【深度学习】解析Vision Transformer (ViT): 从基础到实现与训练

之前介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/132061304 文章目录 背景实现代码示例解释 训练数据准备模型定义训练和评估总结 Vision Transformer&#xff08;ViT&#xff09;是一种基于transformer架构的视觉模型&#xff0c;它最初是由谷歌研究…

blender bpy将顶点颜色转换为UV纹理vertex color to texture

一、关于环境 安装blender的bpy&#xff0c;不需要额外再安装blender软件。在python控制台中直接输入pip install bpy即可。 二、关于代码 本文所给出代码仅为参考&#xff0c;禁止转载和引用&#xff0c;仅供个人学习。 本文所给出的例子是https://download.csdn.net/downl…

【车载开发系列】汽车嵌入式开发常用工具介绍

【车载开发系列】汽车嵌入式开发常用工具介绍 【车载开发系列】汽车嵌入式开发常用工具介绍 【车载开发系列】汽车嵌入式开发常用工具介绍一. ChipON IDE For KungFu32二. ChipON PRO KF32三. GIT四. JLink五. S32DS六. parasoft ctest七. TCANLINPro八. vector Canoe 一. Chip…