数组方法总结

创建数组的方法

  • Array.of(): 创建包含所有传入参数的数组。
  • Array.from(): 从类数组或可迭代对象创建数组。
let arr1 = Array.of(1, 2, 3); // [1, 2, 3]
let arr2 = Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']

添加/删除元素

  • push(): 在数组末尾添加一个或多个元素,返回新数组的长度。
  • pop(): 删除数组末尾的一个元素,返回该元素。
  • unshift(): 在数组开头添加一个或多个元素,返回新数组的长度。
  • shift(): 删除数组开头的一个元素,返回该元素。
  • splice(): 从数组中添加/删除元素,返回被删除的元素。如果未规定第二个参数,则删除从 index 开始到原数组结尾的所有元素。改变原数组
let arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
arr.pop(); // [1, 2, 3]
arr.unshift(0); // [0, 1, 2, 3]
arr.shift(); // [1, 2, 3]
arr.splice(1, 1, 'a'); // [1, 'a', 3]
arr.splice(1, 0, 'a'); //[1, 'a', 2, 3]

查找元素

  • indexOf(): 返回元素在数组中的第一个索引,没有则返回 -1。
  • lastIndexOf(): 返回元素在数组中的最后一个索引,没有则返回 -1。
  • includes(): 检查数组是否包含某个元素,返回布尔值。
  • find(): 返回满足提供的测试函数的第一个元素的值。
  • findIndex(): 返回满足提供的测试函数的第一个元素的索引。
let arr = [1, 2, 3, 2];
arr.indexOf(2); // 1
arr.lastIndexOf(2); // 3
arr.includes(3); // true
arr.find(x => x > 1); // 2
arr.findIndex(x => x > 1); // 1

迭代方法

  • for 循环或 for…of 循环
  • forEach(): 对数组的每个元素执行一次提供的函数。return 语句会退出当前的回调函数,但 forEach 循环会继续处理数组中的下一个元素,forEach函数没有返回值,和上面两个循环一样
  • map(): 创建一个新数组,其结果是该数组中的每个元素调用一次提供的函数后的返回值。新数组的长度与原数组的长度一致
  • filter(): 创建一个新数组,其中包含所有通过提供的函数实现的测试的元素。
  • reduce(): 对数组中的每个元素执行一个 reducer 函数,最终得到一个值。
  • reduceRight(): 从右到左对数组中的每个元素执行一个 reducer 函数,最终得到一个值。
  • every(): 测试数组的所有元素是否都通过了指定函数的测试,返回布尔值。return停止循环
  • some(): 测试数组中的某些元素是否至少有一个通过了指定函数的测试,返回布尔值。return停止循环
let arr = [1, 2, 3, 4];
arr.forEach(x => console.log(x)); // 1 2 3 4
let doubled = arr.map(x => x * 2); // [2, 4, 6, 8]
let evens = arr.filter(x => x % 2 === 0); // [2, 4]
let sum = arr.reduce((acc, x) => acc + x, 0); // 10
let sumRight = arr.reduceRight((acc, x) => acc + x, 0); // 10
arr.every(x => x > 0); // true
arr.some(x => x > 3); // true

排序和翻转

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

连接、切割、复制

  • concat(): 合并两个或多个数组,不改变现有数组,返回一个新数组。
  • slice(): 返回一个从开始到结束(不包括结束)选择的数组的一部分。
  • join(): 将数组的所有元素连接成一个字符串。
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = arr1.concat(arr2); // [1, 2, 3, 4]
let arr4 = arr3.slice(1, 3); // [2, 3]
let str = arr4.join('-'); // "2-3"

其他方法

  • fill(): 用一个固定值填充数组中的从起始索引到终止索引(不包括终止索引)的全部元素。可以使用负数索引来表示从数组末尾开始的相对位置。改变原数组,并返回修改后的原数组
  • copyWithin(): 从数组的指定位置拷贝元素到数组的另一个指定位置中。它会改变原数组,并返回修改后的数组
    target:复制开始的位置的索引。start(可选):复制元素的起始位置的索引(包含该位置)。默认是 0。end(可选):复制元素的结束位置的索引(不包含该位置)。默认是数组的长度。
let arr = [1, 2, 3, 4];
arr.fill(0, 2, 4); // [1, 2, 0, 0]
arr.fill(0, -3, -1); // [1, 0, 0, 4]
arr.copyWithin(2, 0, 2); // [1, 2, 1, 2]

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

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

相关文章

YOLOv8/v10项目使用教程

根据改好的YOLOv8.yaml改yolov10.yaml教程 打开ultralytics/cfg/models/v8路径,找到需要移植的yaml文件,从其中复制相关的模块。打开一个YOLOv10的yaml文件。 注释掉之前相应位置的模块,并粘贴上面复制的模块,完成。 其余使用步骤…

云原生面试

云原生面试 Kubernetes原理Kubernetes 如何保证集群的安全性。简述 Kubernetes 准入机制简述Kubernetes Secret 有哪些使用方式简述Kubernetes PodSecurityPolicy机制简述Kubernetes PodSecurityPolicy机制能实现哪些安全策略简述Kubernetes 网络策略原理简述Kubernetes 数据持…

基于SpringBoot+Vue的美容美发在线预约系统的设计与实现【附源码】

毕业设计(论文) 题目:基于SpringBootVue的美容美发在线预约系统的设计与实现 二级学院: 专业(方向): 班 级: 学 生: 指导教师&#xff…

072、对象的创建与调用方法

071、Python 类的定义 当我们定义好一个类后,肯定是为了使用其中的功能来解决某些问题的,那么如何使用呢? 首先就是需要通过类创建对象,也就是类的实例化(只有实例化后的对象才能够调用里面的属性和方法)…

Go 语言学习笔记之通道 Channel

Go 语言学习笔记之通道 Channel 大家好,我是码农先森。 概念 Go 语言中的通道(channel)是用来在 Go 协程之间传递数据的一种通信机制。 通道可以避免多个协程直接共享内存,避免数据竞争和锁的使用,从而简化了并发程…

【解决方案】Mysql 数据库千万数据插入脚本

一.背景 要做数据模拟,需要在测试环境创建7千万的流水数据,进行迁移的模拟动作。 二.具体代码 private static final String DB_URL "jdbc:mysql://IP:3306/twallet_dev?zeroDateTimeBehaviorconvertToNull&allowMultiQueriestrue&useAf…

《Mybatis-Plus》系列文章目录

什么是 MyBatis-Plus? Mybatis-Plus是一个在MyBatis基础上进行增强和扩展的开源Java持久层框架。 Mybatis-Plus(简称MP)旨在简化开发、提高效率,通过提供一系列便捷的功能和工具,大幅度减少开发人员编写重复代码的时…

element-ui 下拉菜单el-dropdown-item添加点击事件

使用element-ui下拉菜单组件Dropdown时绑定点击事件,事件不生效。 click 常见于其用在Vue中的事件绑定,而实际上是 v-on 的简写,而 v-on 则是对 vue 的事件体系封装之后的 API接口。 native修饰符用于处理DOM原生事件,由于组件 …

如何在web页面下做自动化测试?

自动化测试是在软件开发中非常重要的一环,它可以提高测试效率并减少错误率。在web页面下进行自动化测试,可以帮助我们验证网页的功能和交互,并确保它们在不同浏览器和平台上的一致性。本文将从零开始,详细介绍如何在web页面下进行…

10--7层负载均衡集群

前言:动静分离,资源分离都是在7层负载均衡完成的,此处常被与四层负载均衡比较,本章这里使用haproxy与nginx进行负载均衡总结演示。 1、基础概念详解 1.1、负载均衡 4层负载均衡和7层负载均衡是两种常见的负载均衡技术&#xff…

PHP 语言特定指南

PHP 语言特定指南 本指南将教您如何使用 Docker 创建容器化的 PHP 应用程序。通过本指南,您将学习如何: 容器化并运行一个 PHP 应用程序设置用于开发 PHP 应用程序的本地环境在容器内运行 PHP 应用程序的测试使用 GitHub Actions 配置容器化 PHP 应用程…

vite+vue3+ts项目搭建流程 (pnpm, eslint, prettier, stylint, husky,commitlint )

vitevue3ts项目搭建 项目搭建项目目录结构 项目配置自动打开项目eslint①vue3环境代码校验插件②修改.eslintrc.cjs配置文件③.eslintignore忽略文件④运行脚本 prettier①安装依赖包②.prettierrc添加规则③.prettierignore忽略文件④运行脚本 stylint①.stylelintrc.cjs配置文…

前端自动化

前端自动化的内容 自动化代码检查自动化测试自动化构建自动化部署自动化文档 前端自动化的最佳实践

基于改进YOLOv5的安全帽检测算法 | 引入Ghost卷积 + 添加CA注意力机制 + 更换Neck网络之BiFPN + 更换损失函数之WIoU

前言:Hello大家好,我是小哥谈。为了解决建筑工地、隧道、煤矿等施工场景中现有安全帽检测算法对于小目标、密集目标以及复杂环境下的检测精度低的问题,设计实现了一种基于YOLOv5的改进目标检测算法,记为YOLOv5-GBCW。首先使用Ghos…

心理健康测试系统设计

心理健康测试系统设计需要综合考虑多个方面,以确保系统的准确性、易用性和有效性。以下是一个心理健康测试系统设计方案: 一、设计目标 准确性:确保测试结果能够准确反映被测者的心理健康状况。 易用性:设计简洁明了的界面和操作…

C语言 | Leetcode C语言题解之第166题分数到小数

题目: 题解: struct HashMapNode {int key;int val;UT_hash_handle hh; };struct HashMapNode* hashMap NULL;int hashMapAdd(int key, int val) {struct HashMapNode* node;HASH_FIND_INT(hashMap, &key, node);if(node ! NULL){return node->…

openai停止中国的api服务,但是性能相当的阿里云免费提供迁移

🎥 开场白: “大家好,我是你们的科技小助手,今天给大家带来一个重要的信息更新!” 🌐 引入话题: “最近,许多朋友可能已经听说了,OpenAI决定停止对中国的服务。但别担心…

fiddler抓https包

1,安装fiddler省略 2,下载证书步骤:tools-options-https 点击确认,点击OK,点击是 把证书安装到谷歌浏览器上步骤:点击谷歌浏览器右上角的设置,在搜索框中搜索证书,点击“证书管理”…

从0搭建一个vue项目,不使用脚手架从html到vue

前言 从最开始学习web网页开始,搭建一个网页只需要创建一个html文件对其进行编写dom标签语言即可;后来分离了html,css和js,搭建一个网页开始需要文件夹,文件夹包含了这3类文件以及静态文件,图片&#xff0c…

备战秋招day4

算法 242. 有效的字母异位词 class Solution {public boolean isAnagram(String s, String t) {int[] count new int[26];for(int i 0;i<s.length();i){count[s.charAt(i)-a];}for(int i 0;i<t.length();i){count[t.charAt(i)-a]--;if(count[t.charAt(i)-a]<0){r…