一文了解JavaScript 中数组所有API的使用

文章导读:AI 辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是 JavaScript 的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。

这篇文章瑶琴带大家学习 js 中最常用的一个内置对象:Array。数组在编程中非常常见,它提供了一种方便的方式来组织和操作数据集合。

1.定义

Array 是JavaScript中的一种基本数据类型,用于存储有序的元素集合。数组可以包含任意类型的数据,包括数字、字符串、对象,甚至是其他数组(即多维数组)。

使用场景:

1.存储集合:存储一系列相关的数据。

2.索引访问:通过索引快速访问数组中的元素。

3.迭代处理:对数组中的每个元素执行相同的操作。


4.数据操作:添加、删除、排序和搜索数组元素。

基本操作:

1.创建数组:

let fruits = ['Apple', 'Banana', 'Orange'];

2.访问元素:

let firstFruit = fruits[0]; // 'Apple'

3.修改元素:

fruits[1] = 'Pineapple'; // 修改第二个元素

4.添加元素:

fruits.push('Grape'); // 在数组末尾添加元素

5.删除元素:

fruits.shift(); // 删除第一个元素 
fruits.pop(); // 删除最后一个元素

常用方法:

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

.pop():删除数组的最后一个元素,并返回被删除的元素。

.shift():删除数组的第一个元素,并返回被删除的元素。

.unshift():在数组开头添加一个或多个元素,并返回新的长度。

.slice():返回数组的一个浅拷贝。

.splice():添加、删除或替换数组中的元素。

.map():创建一个新数组,其元素是调用一个提供的函数在每个元素上的返回值。

.filter():创建一个新数组,包含通过测试的所有元素。

.reduce():对数组进行累加操作,并返回一个累加值。

2.示例

1.使用 .map() 转换数组元素:

let numbers = [1, 2, 3, 4, 5]; 
let squaredNumbers = numbers.map(number => number * number); 
console.log(squaredNumbers); // [1, 4, 9, 16, 25]

2.使用 .filter() 筛选数组元素:

let users = [ 
{ name: 'Alice', age: 21 }, 
{ name: 'Bob', age: 25 }, 
{ name: 'Carol', age: 18 } 
]; 
let adults = users.filter(user => user.age >= 18); 
console.log(adults); // 包含所有年龄大于或等于18的用户

3.使用 .reduce() 计算数组元素总和:

let sum = numbers.reduce((total, num) => total + num, 0); 
console.log(sum); // 15

注意事项:

数组索引是从 0 开始的。

数组长度是可变的,可以使用 .length 属性。

数组方法如 .push(), .pop(), .shift(), .unshift() 会改变原数组的长度。

4. .concat() - 连接两个或多个数组,并返回一个新数组,不改变原始数组。

let array1 = [1, 2, 3]; let array2 = [4, 5, 6]; 
let concatenatedArray = array1.concat(array2); // concatenatedArray = [1, 2, 3, 4, 5, 6]

5. .includes(searchElement[, fromIndex]) - 检查数组是否包含特定的元素,并返回一个布尔值。

let numbers = [1, 2, 3, 4, 5]; 
console.log(numbers.includes(3)); // true 
console.log(numbers.includes(6)); // false

6.  .indexOf(searchElement[, fromIndex]) - 返回数组中元素第一次出现的索引,如果未找到则返回 -1。

let colors = ['red', 'green', 'blue']; 
console.log(colors.indexOf('green')); // 1

7. .lastIndexOf(searchElement[, fromIndex]) - 返回数组中元素最后一次出现的索引,如果未找到则返回 -1。

let fruits = ['apple', 'banana', 'apple']; 
console.log(fruits.lastIndexOf('apple')); // 2

8. .join([separator]) - 将数组中的所有元素连接成一个字符串,并可选地指定一个分隔符。

let parts = ['shoulders', 'knees']; 
let song = parts.join(', '); // song = "shoulders, knees"

9. .reverse() - 将数组中的元素顺序颠倒,并直接修改原始数组。

let letters = ['a', 'b', 'c', 'd']; 
letters.reverse(); // letters = ['d', 'c', 'b', 'a']

10. .some([predicate]) - 检查数组中是否有至少一个元素满足提供的测试函数。

let ages = [20, 30, 18, 22]; 
console.log(ages.some(function(age) { return age < 18; 
})); // true

11. .every([predicate]) - 检查数组中是否所有元素都满足提供的测试函数。

let ages = [20, 30, 18, 22]; 
console.log(ages.every(function(age) { return age >= 18; 
})); // false

12. .find([predicate]) - 返回数组中满足提供的测试函数的第一个元素。

let users = [ 
{ name: 'Alice', age: 21 }, 
{ name: 'Bob', age: 25 }, 
{ name: 'Carol', age: 18 } 
]; 
let user = users.find(user => user.age > 20); 
console.log(user); // { name: 'Bob', age: 25 }

13.  .findIndex([predicate]) - 返回数组中满足提供的测试函数的第一个元素的索引。

let users = [ 
{ name: 'Alice', age: 21 }, 
{ name: 'Bob', age: 25 }, 
{ name: 'Carol', age: 18 } 
]; 
let index = users.findIndex(user => user.age === 25); 
console.log(index); // 1

14. .slice([begin[, end]]) - 返回一个数组的浅拷贝,从 begin 到 end(不包括 end)。

let animals = ['ant', 'bison', 'camel', 'duck', 'elephant']; 
let animalsCopy = animals.slice(1, 3); // animalsCopy = ['bison', 'camel']

15. .splice(start[, deleteCount[, item1[, item2[, ...]]]]) - 通过删除或替换现有元素或添加新元素来修改数组。

let fruits = ['apple', 'banana', 'orange', 'kiwi']; 
fruits.splice(2, 1, 'mango', 'lemon'); // fruits = ['apple', 'banana', 'mango', 'lemon', 'kiwi']

16. .sort([compareFunction]) - 对数组元素进行排序,并直接修改原始数组。

let numbers = [4, 2, 5, 1, 3]; 
numbers.sort((a, b) => a - b); // 升序排序 // numbers = [1, 2, 3, 4, 5]

数组是JavaScript中处理数据集合的强大工具,它们不仅可以用来存储数据,还可以通过各种方法进行数据的转换和分析。

这些方法覆盖了数组的创建、访问、修改、删除、排序、搜索和迭代等基本操作。掌握这些方法对于日常的前端开发工作非常重要,在处理DOM元素集合、用户输入、处理服务器响应数据等方面都很有用。

希望今天的内容对初学前端的朋友有所帮助。也希望每一个初学者都能成为一个优秀的前端开发工程师,加油。

最后啰嗦一句,好记性不如烂笔头,希望大家在学习的过程中养成做笔记的习惯,形成自己的知识体系。

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

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

相关文章

【八股】在Gradle和Maven之间抉择构建工具

在Java开发中&#xff0c;Gradle和Maven是两种常用的构建工具&#xff0c;它们在许多方面有不同的特点和使用场景。以下是它们之间的一些主要区别&#xff1a; 构建脚本 Maven&#xff1a;使用XML文件&#xff08;pom.xml&#xff09;来定义项目的构建配置。XML的语法严格且具…

【每日刷题】Day55

【每日刷题】Day55 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 441. 排列硬币 - 力扣&#xff08;LeetCode&#xff09; 2. 455. 分发饼干 - 力扣&#xff08;Leet…

centos系统清理docker日志文件

centos系统清理docker日志文件 1.查看docker根目录位置2.清理日志 1.查看docker根目录位置 命令&#xff1a;docker info ,将Docker Root Dir 的值复制下来。如果目录中包含 等特殊符号的目录&#xff0c;需要转义 2.清理日志 创建文件&#xff1a;vim docker_logs_clean.…

BBC 超2.5万员工敏感数据泄露

近日据外媒报道&#xff0c;英国广播公司 (BBC) 发生了严重的数据泄露事件&#xff0c;了超 25,000 名现任和前任员工的敏感个人信息泄露。 BBC 表示&#xff0c;此次泄密源于第三方云数据存储服务中的私人记录被非法访问。 BBC 表示&#xff1a;“正在与内部和外部的专家团队…

2024-6-4 石群电路-23

2024-6-4&#xff0c;星期二&#xff0c;13:16&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。今天又是阳光明媚的一天&#xff0c;没有什么特别的事情发生&#xff0c;加油学习喽~ 今日观看了石群老师电路课程的第39和第40个视频&#xff0c;继续第九章的学…

vulnhub靶机xptosystem

下载地址&#xff1a;https://download.vulnhub.com/xpto/xptosystem.ova 主机发现 端口扫描 服务扫描 漏洞扫描 看一下web 目录爆破 那不用说肯定看看robots.txt 要检查readme去看看 看不懂 这个是靶场吧很像 在最后看着挺像url路径的 还真是&#xff0c;我直接base64 坏了还…

TS 小技巧: 使用元组生成联合类型

前言 在我们使用 TypeScript 开发业务的时候&#xff0c;也许你会遇到一个这样的问题&#xff1a;我们如何根据一个数组的值得到一个联合类型&#xff1f; 这里向大家介绍一个开发小技巧&#xff1a;使用元组生成联合类型 开发场景 我们看下面一段 ts 代码&#xff1a; con…

Linux设备驱动platform驱动

更全面的内容可以查看我的github 提供了示例代码 platform设备驱动 Linux 系统要考虑到驱动的可重用性&#xff0c;因此提出了驱动的分离与分层这样的软件思路&#xff0c;为了达到所有硬件都可以按照总线设备驱动模型来实现驱动&#xff0c;Linux从2.6起就加入了 platform 设…

8086 汇编笔记(八):转移指令的原理

一、操作符 offset 操作符offset在汇编语言中是由编译器处理的符号&#xff0c;它的功能是取得标号的偏移地址 codesg segmentstart: mov ax,offset start ;相当于 mv ax,0s: mov ax,offset s ;相当于 mv ax,3codesg endsend start 二、jmp 指令 jmp为无条件…

【面试宝藏】容器技术详解其二

Docker与容器化技术详解 15. Docker Image 和 Docker Layer&#xff08;层&#xff09;有什么不同&#xff1f; Docker Image&#xff1a;Docker镜像是一个不可变的文件&#xff0c;包含应用程序的所有依赖项、库、配置和环境变量。它是运行Docker容器的基础&#xff0c;包含…

每天一个数据分析题(三百五十)

在“人货场”的业务模块下&#xff0c;有可能成为描述“场”的情况的相关数据表是 A. 订单表 B. 订单详情表 C. 客户详情表 D. 区域表 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案

【二叉树】Leetcode 222. 完全二叉树的节点个数【简单】

完全二叉树的节点个数 你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最…

【云原生_K8S系列】什么是 Kubernetes Pod?用实际例子解释

Kubernetes&#xff08;简称K8S&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化容器化应用的部署、扩展和管理。在Kubernetes中&#xff0c;Pod是最小的部署单元。理解Pod的概念对于掌握Kubernetes至关重要。本篇文章将详细解释什么是Kubernetes Pod&#xff0c;并…

数字孪生概念、数字孪生技术架构、数字孪生应用场景,深度长文学习

一、数字孪生起源与发展 1.1 数字孪生产生背景 数字孪生的概念最初由Grieves教授于2003年在美国密歇根大学的产品全生命周期管理课程上提出&#xff0c;并被定义为三维模型&#xff0c;包括实体产品、虚拟产品以及二者间的连接&#xff0c;如下图所示&#xff1a; 2011年&…

【机器学习】机器学习在深度学习领域中的作用:半监督学习的视角

&#x1f440;时空之门&#x1f440; &#x1f50d;引言&#x1f388;半监督学习概述&#x1f69d;机器学习在深度学习领域中的作用☘特征提取与表示学习&#x1f340;复杂任务建模❀结合半监督学习提升性能 &#x1f680;半监督学习在深度学习中的应用场景&#x1f4d5;图像识…

反弹shell检测的一些思路

前言 反弹shell是攻击者常用的手段之一&#xff0c;通过反弹Shell&#xff0c;攻击者可以绕过防火墙&#xff0c;获取目标系统的shell访问权限&#xff0c;进行后续的恶意操作。因此&#xff0c;及时检测并阻止反弹Shell行为对于安全防护来说非常重要。本文通过介绍反弹shell的…

Baidu Comate帮开发者“代码搬砖”,2天搞定原先3周工作量

日常项目基础工作耗费大量时间、紧急任务一连“肝”几个大夜……对于一个计算机相关专业研究生来说&#xff0c;几乎是家常便饭。随着大模型能力赋能编码工具&#xff0c;被开发者们戏称的“代码搬砖”生活有了起色。 从去年开始&#xff0c;PPDE 飞桨开发者技术专家、澳门理工…

CV每日论文---2024.6.3

1、Video-MME: The First-Ever Comprehensive Evaluation Benchmark of Multi-modal LLMs in Video Analysis 中文标题&#xff1a;Video-MME&#xff1a;视频分析领域首个多模态法学硕士综合评估基准 简介&#xff1a;Video-MME 是一个全面评估多模态大语言模型&#xff08;M…

day54_60

1.判断子序列 class Solution {public boolean isSubsequence(String s, String t) {if (s.length() 0) return true;for (int i 0, j 0; j < t.length(); j) {if (s.charAt(i) t.charAt(j)) {// 若已经遍历完 s &#xff0c;则提前返回 trueif (i s.length())return …

MAX7219(模拟SPI)驱动灯环的简单应用

文章目录 一、MAX7219是什么&#xff1f;二、使用步骤1.硬件1.1 引脚说明1.2 应用电路1.2.1 驱动数码管1.2.2 驱动点阵 2.软件2.1 时序2.2 寄存器2.2.1 掉电寄存器2.2.2 译码模式寄存器2.2.3 亮度寄存器2.2.4 扫描寄存器2.2.5 显示测试寄存器 2.3 初始化2.4 控制左侧灯环特定位…