JS中Array的常用方法

devtools/2024/10/19 14:04:18/

文章目录

      • 1. 创建和初始化数组
      • 2. 添加和删除元素
      • 3. 查找元素
      • 4. 遍历数组
      • 5. 数组转换
      • 6. 排序和反转
      • 7. 其他方法

JavaScript 中的 Array 对象提供了许多常用的方法,这些方法可以帮助你更方便地操作数组。以下是一些常用的 Array 方法及其用法:

1. 创建和初始化数组

  • new Array():创建一个空数组。
  • Array.of():创建一个具有可变数量参数的新数组实例。
  • Array.from():从类数组或可迭代对象创建一个新的数组实例。
javascript">const arr1 = new Array();
const arr2 = Array.of(1, 2, 3);
const arr3 = Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']

2. 添加和删除元素

  • push(...items):在数组末尾添加一个或多个元素,并返回新的长度。
  • pop():移除数组末尾的元素,并返回该元素。
  • unshift(...items):在数组开头添加一个或多个元素,并返回新的长度。
  • shift():移除数组开头的元素,并返回该元素。
javascript">const arr = [1, 2, 3];arr.push(4); // arr 现在是 [1, 2, 3, 4]
console.log(arr.pop()); // 输出: 4, arr 现在是 [1, 2, 3]arr.unshift(0); // arr 现在是 [0, 1, 2, 3]
console.log(arr.shift()); // 输出: 0, arr 现在是 [1, 2, 3]

3. 查找元素

  • indexOf(searchElement[, fromIndex]):返回第一个匹配项的索引,如果没有找到则返回 -1。
  • lastIndexOf(searchElement[, fromIndex]):返回最后一个匹配项的索引,如果没有找到则返回 -1。
  • find(callback[, thisArg]):返回数组中满足提供的测试函数的第一个元素的值,如果没有找到则返回 undefined
  • findIndex(callback[, thisArg]):返回数组中满足提供的测试函数的第一个元素的索引,如果没有找到则返回 -1。
javascript">const arr = [1, 2, 3, 4, 5];console.log(arr.indexOf(3)); // 输出: 2
console.log(arr.lastIndexOf(3)); // 输出: 2const foundElement = arr.find(element => element > 3);
console.log(foundElement); // 输出: 4const foundIndex = arr.findIndex(element => element > 3);
console.log(foundIndex); // 输出: 3

4. 遍历数组

  • forEach(callback[, thisArg]):对数组中的每个元素执行一次提供的函数。
  • map(callback[, thisArg]):创建一个新数组,其结果是该数组中的每个元素调用提供的函数的结果。
  • filter(callback[, thisArg]):创建一个新数组,包含通过提供的函数实现的测试的所有元素。
  • reduce(callback[, initialValue]):对数组中的每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。
  • reduceRight(callback[, initialValue]):与 reduce 类似,但降序执行。
javascript">const arr = [1, 2, 3, 4, 5];// forEach
arr.forEach(element => console.log(element));// map
const squared = arr.map(element => element * element);
console.log(squared); // 输出: [1, 4, 9, 16, 25]// filter
const evenNumbers = arr.filter(element => element % 2 === 0);
console.log(evenNumbers); // 输出: [2, 4]// reduce
const sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 输出: 15// reduceRight
const reversedSum = arr.reduceRight((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(reversedSum); // 输出: 15

5. 数组转换

  • slice([begin[, end]]):返回一个新的数组,包含从开始到结束(不包括结束)的数组的一部分浅拷贝。
  • splice(start[, deleteCount[, ...items]]):改变原数组,通过删除现有元素和/或添加新元素。
  • concat(...items):返回一个新的数组实例,该实例是通过将现有数组与传入的数组或非数组值连接而成的。
  • flat(depth):按照指定深度递归地展平数组。
  • flatMap(callback[, thisArg]):先映射数组,然后将结果展平。
javascript">const arr = [1, 2, 3, 4, 5];// slice
const sliced = arr.slice(1, 3);
console.log(sliced); // 输出: [2, 3]// splice
const removed = arr.splice(1, 2, 10, 11);
console.log(arr); // 输出: [1, 10, 11, 4, 5]
console.log(removed); // 输出: [2, 3]// concat
const concatenated = arr.concat([6, 7]);
console.log(concatenated); // 输出: [1, 10, 11, 4, 5, 6, 7]// flat
const nested = [1, [2, [3, [4, 5]]]];
const flattened = nested.flat(Infinity);
console.log(flattened); // 输出: [1, 2, 3, 4, 5]// flatMap
const mappedAndFlattened = arr.flatMap(x => [x, x * 2]);
console.log(mappedAndFlattened); // 输出: [1, 2, 10, 20, 11, 22, 4, 8, 5, 10]

6. 排序和反转

  • sort([compareFunction]):对数组的元素进行排序,并返回排序后的数组。
  • reverse():反转数组中元素的顺序,并返回反转后的数组。
javascript">const arr = [3, 1, 4, 1, 5, 9, 2, 6];// sort
arr.sort((a, b) => a - b);
console.log(arr); // 输出: [1, 1, 2, 3, 4, 5, 6, 9]// reverse
arr.reverse();
console.log(arr); // 输出: [9, 6, 5, 4, 3, 2, 1, 1]

7. 其他方法

  • includes(searchElement[, fromIndex]):判断数组是否包含某个指定的值,如果是返回 true,否则返回 false
  • join([separator]):将所有数组元素连接成一个字符串。
  • some(callback[, thisArg]):检测数组中是否有至少一个元素满足提供的测试函数。
  • every(callback[, thisArg]):检测数组中的所有元素是否都满足提供的测试函数。
javascript">const arr = [1, 2, 3, 4, 5];// includes
console.log(arr.includes(3)); // 输出: true// join
const joined = arr.join('-');
console.log(joined); // 输出: 1-2-3-4-5// some
const hasEven = arr.some(element => element % 2 === 0);
console.log(hasEven); // 输出: true// every
const allPositive = arr.every(element => element > 0);
console.log(allPositive); // 输出: true

http://www.ppmy.cn/devtools/127027.html

相关文章

【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想!

【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想! 【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想! 文章目录 【…

Llama3-Factory模型部署新手指南

一、介绍 为了保持其公司在人工智能开源大模型领域的地位,社交巨头Meta推出了旗下最新开源模型。当地时间4月18日,Meta在官网上宣布公布了旗下最新大模型Llama 3。目前,Llama 3已经开放了80亿(8B)和700亿(…

量子计算机的原理与物理实现

量子计算机的原理与物理实现很复杂 指导性原则 首先思考制备一台量子计算机需要些什么? 需要量子比特——二能级量子系统。除了量子计算机需要满足一些物理特性,它还必须要把量子比特绘制到某种初态上,以及测量系统的输出态。 而实验上的挑战…

面试22222

好的,我会逐步解释这些面试问题,并给出一些应答建议。我们先从第一个问题开始: 1. 介绍一下你的学术背景和工作经验,以及为什么对生物信息学感兴趣。 回答思路: 首先简单概述你的学术背景,比如你的专业、…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(无习题)

C 中的 list 容器详细总结 1. 什么是 list? list文档 list 是 C 标准模板库 (STL) 中的一种容器类型,采用双向链表的数据结构来存储数据。双向链表意味着每个节点包含一个数据元素和两个指针,分别指向前一个和后一个节点。list 适用于需要…

后台管理员登录实现--系统篇

我的小系统后台原来就有一个上传图片的功能还夹带个删除图片的功能,还嵌到了一个菜单里面。之前效果如下 那么现在为了加大安全力度,想增加一个登录页面。通过登录再到这个页面。看着貌似很简单,但是听我细细说来,要新增些什么东西…

【AI学习】Mamba学习(八):HiPPO通用框架定义和方法

在大概了解了《HiPPO通用框架介绍》后,继续看HiPPO通用框架的相关定义和方法。相关内容在论文《HiPPO: Recurrent Memory with Optimal Polynomial Projections》的第二章描述。 2 The HiPPO Framework: High-order Polynomial Projection Operators 作者将投影作…

mybatis在springboot项目中的批次操作

在 Spring 中,使用 Transactional 注解管理事务,可以确保多个数据库操作在同一个事务中进行。在 Transactional 注解的方法中,如果要对两个表执行批量插入操作,并使用 MyBatis 的 BATCH 执行器类型的 SqlSession,可以通…