【Java 进阶篇】JavaScript Array数组详解

news2024/10/7 6:39:46

在这里插入图片描述

当我们编写JavaScript代码时,经常需要处理一组数据。JavaScript中的数组(Array)是一种用于存储多个值的数据结构,它提供了许多方法和功能,使我们能够方便地操作这些数据。在本篇博客中,我们将详细探讨JavaScript数组,包括如何创建、操作、遍历和使用数组。

什么是JavaScript数组?

JavaScript数组是一种有序的数据集合,它可以存储多个值。数组的每个值称为元素,每个元素都有一个与之关联的索引,用来标识其在数组中的位置。数组可以包含不同数据类型的元素,包括数字、字符串、对象等。例如:

var fruits = ["苹果", "香蕉", "橙子"];
var numbers = [1, 2, 3, 4, 5];
var mixed = ["Hello", 42, true, { name: "John" }];

在上面的示例中,我们创建了不同类型的数组。fruits数组包含字符串元素,numbers数组包含数字元素,mixed数组则混合了字符串、数字、布尔值和对象。

创建数组

直接量法

最简单的创建数组的方法是使用数组直接量(array literal),就是一对方括号[],并在其中添加元素,元素之间用逗号分隔。例如:

var colors = ["红色", "绿色", "蓝色"];

使用Array构造函数

另一种创建数组的方法是使用Array构造函数。你可以不传递参数,创建一个空数组,或者传递一个数字参数,表示数组的长度。例如:

var emptyArray = new Array();
var arrayWithLength = new Array(3); // 创建一个长度为3的数组

使用Array.of()方法

在ES6中,引入了Array.of()方法,它允许我们创建具有指定元素的新数组。与Array构造函数不同,Array.of()不会将单个数字参数解释为数组长度。例如:

var numbers = Array.of(1, 2, 3, 4, 5);

使用扩展运算符

ES6还引入了扩展运算符(spread operator),它可以将一个可迭代对象(比如字符串、集合、数组等)展开成多个元素。这使得创建数组变得更加方便。例如:

var colors = ["红色", "绿色", ...otherColors, "蓝色"];

上面的代码将otherColors中的所有元素插入到colors数组中。

访问数组元素

要访问数组元素,可以使用方括号[]和元素的索引。索引是从0开始的,第一个元素的索引为0,第二个元素的索引为1,依此类推。例如:

var fruits = ["苹果", "香蕉", "橙子"];
console.log(fruits[0]); // 输出:苹果
console.log(fruits[1]); // 输出:香蕉
console.log(fruits[2]); // 输出:橙子

修改数组元素

你可以通过索引来修改数组元素的值。例如:

var colors = ["红色", "绿色", "蓝色"];
colors[1] = "黄色"; // 将第二个元素从"绿色"改为"黄色"
console.log(colors); // 输出:["红色", "黄色", "蓝色"]

数组的长度

要获取数组的长度,可以使用数组的length属性。例如:

var numbers = [1, 2, 3, 4, 5];
console.log(numbers.length); // 输出:5

你还可以通过修改length属性来截断或扩展数组。如果将length设置为一个小于数组当前长度的值,数组将被截断。如果将length设置为一个大于数组当前长度的值,数组将被扩展并用undefined填充。例如:

var numbers = [1, 2, 3, 4, 5];
numbers.length = 3; // 截断数组
console.log(numbers); // 输出:[1, 2, 3]
var numbers = [1, 2, 3, 4, 5];
numbers.length = 7; // 扩展数组
console.log(numbers); // 输出:[1, 2, 3, 4, 5, undefined, undefined]

数组的方法

JavaScript提供了许多用于操作数组的内置方法。这些方法可以用于添加、删除、替换、搜索、排序和遍历数组。以下是一些常用的数组方法:

push()pop()

  • push()方法用于在数组末尾添加一个或多个元素。
  • pop()方法用于移除并返回数组的最后一个元素。
var fruits = ["苹果", "香蕉"];
fruits.push("橙子"); // 添加橙子到数组末尾
console.log(fruits); // 输出:["苹果", "香蕉", "橙子"]

var lastFruit = fruits.pop(); // 移除并返回最后一个元素
console.log(lastFruit); // 输出:橙子
console.log(fruits); // 输出:["苹果", "香蕉"]

unshift()shift()

  • unshift()方法用于在数组开头添加一个或多个元素。
  • shift()方法用于移除并返回数组的第一个元素。
var fruits = ["香蕉", "橙子"];
fruits.unshift("苹果"); // 添加苹果到数组开头
console.log(fruits); // 输出:["苹果", "香蕉", "橙子"]

var firstFruit = fruits.shift(); // 移除并返回第一个元素
console.log(firstFruit); // 输出:苹果
console.log(fruits); // 输出:["香蕉", "橙子"]

concat()

concat()方法用于合并两个或多个数组,并返回一个新数组,而不修改原数组。

var colors1 = ["红色", "绿色"];
var colors2 = ["蓝色", "黄色"];
var allColors = colors1.concat(colors2);
console.log(allColors); // 输出:["红色", "绿色", "蓝色", "黄色"]

join()

join()方法用于将数组的所有元素拼接成一个字符串。可以传递一个分隔符作为参数,用于分隔元素。

var fruits = ["苹果", "香蕉", "橙子"];
var fruitString = fruits.join(", "); // 使用逗号和空格分隔元素
console.log(fruitString); // 输出:苹果, 香蕉, 橙子

slice()

slice()方法用于从数组中提取元素,创建一个新数组。可以传递开始索引和结束索引来指定提取的元素范围。

var numbers = [1, 2, 3, 4, 5];
var subArray = numbers.slice(1, 4); // 提取索引1到3的元素
console.log(subArray); // 输出:[2, 3, 4]

splice()

splice()方法用于向数组中插入、删除或替换元素。可以传递多个参数来指定操作。

var colors = ["红色", "绿色", "蓝色"];
// 从索引1开始删除1个元素,然后插入"黄色"和"紫色"
colors.splice(1, 1, "黄色", "紫色");
console.log(colors); // 输出:["红色", "黄色", "紫色", "蓝色"]

indexOf()lastIndexOf()

  • indexOf()方法用于查找指定元素在数组中的第一个匹配的索引。
  • lastIndexOf()方法用于查找指定元素在数组中的最后一个匹配的索引。
var numbers = [1, 2, 3, 2, 4, 2, 5];
var firstIndexOf2 = numbers.indexOf(2); // 查找2的第一个索引
console.log(firstIndexOf2); // 输出:1
var lastIndexOf2 = numbers.lastIndexOf(2); // 查找2的最后一个索引
console.log(lastIndexOf2); // 输出:5

includes()

includes()方法用于判断数组是否包含指定元素,返回布尔值。

var fruits = ["苹果", "香蕉", "橙子"];
var hasBanana = fruits.includes("香蕉");
console.log(hasBanana); // 输出:true

var hasGrapes = fruits.includes("葡萄");
console.log(hasGrapes); // 输出:false

filter()

filter()方法用于创建一个新数组,其中包含通过指定函数测试的所有元素。

var numbers = [1, 2, 3, 4, 5];
var evenNumbers = numbers.filter(function (number) {
  return number % 2 === 0; // 返回偶数
});
console.log(evenNumbers); // 输出:[2, 4]

map()

map()方法用于创建一个新数组,其中的元素是通过指定函数对原数组中的每个元素执行操作后得到的。

var numbers = [1, 2, 3, 4, 5];
var squaredNumbers = numbers.map(function (number) {
  return number * number; // 返回每个元素的平方
});
console.log(squaredNumbers); // 输出:[1, 4, 9, 16, 25]

reduce()

reduce()方法用于对数组中的所有元素执行一个指定的函数,将它们汇总为单个值。

var numbers = [1, 2, 3, 4, 5];
var sum = numbers.reduce(function (accumulator, currentValue) {
  return accumulator + currentValue; // 计算总和
}, 0); // 初始值为0
console.log(sum); // 输出:15

forEach()

forEach()方法用于执行一个指定的函数,一次为数组中的每个元素调用该函数。

var colors = ["红色", "绿色", "蓝色"];
colors.forEach(function (color) {
  console.log("颜色:" + color);
});

这只是JavaScript数组的基础,还有很多其他方法和技巧可以用来处理数组。数组是JavaScript编程中不可或缺的部分,熟练掌握它将帮助你更好地处理和操作数据。无论是在网页开发还是后端开发中,都会频繁使用到数组。

总结

JavaScript数组是一种强大的数据结构,用于存储和操作多个值。你可以使用不同的方法来创建、访问、修改和操作数组,以满足各种编程需求。了解JavaScript数组的基础知识对于任何JavaScript开发者都是至关重要的。

本篇博客只是JavaScript数组的一个入门,数组还有很多更高级的用法和方法等待你去探索。希望本文能够帮助你更好地理解和使用JavaScript数组。如果你想深入了解更多,请继续学习和实践,掌握JavaScript中数组的更多技巧和应用。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

【Linux初阶】多线程2 | 分离线程,线程库,线程互斥,可重入VS线程安全,锁的常见概念

文章目录 ☀️一、分离线程🌻1.pthread_ self - 获取线程ID🌻2.线程分离 ☀️二、用户级线程库🌻1.pthread_t🌻2.理解用户级线程库 - pthread库🌻3.局部存储 ☀️三、线程互斥🌻1.线程间的互斥相关概念&…

【Kali】简单记录

文章目录 信息收集DNS记录分析hostdigdnsenum 路由信息tcptraceroutetctrace 搜索引擎 目标识别arpingfping 识别操作系统p0f 服务枚举端口扫描nmap识别VPN服务器 漏洞映射exploitdbmsfconsole 提权arpspoofDsniff 信息收集 DNS记录分析 host host www.example.com host -a …

Windows 多媒体编程库 DirectX 介绍

目录 1、什么是DirectX? 2、使用DirectX的好处 2.1、DirectX为软件开发者提供硬件无关性 2.2、为硬件开发提供策略 3、DirectX的主体构成 3.1、Direct3D 3.2、DirectDraw 3.3、DirectPlay 3.4、DirectSound 3.5、DirectMusic 3.6、DirectInput 4、Dire…

Python数据分析实战-实现T检验(附源码和实现效果)

实现功能 T 检验(Students t-test)是一种常用的统计方法,用于比较两个样本之间的均值是否存在显著差异。它可以应用于许多场景,其中一些常见的应用场景包括: A/B 测试:在市场营销和用户体验研究中&#xf…

【mmdetection代码解读 3.x版本】FPN层的解读

文章目录 1. forward函数1.1 self.fpn_convs的构建 1. forward函数 def forward(self, inputs: Tuple[Tensor]) -> tuple:assert len(inputs) len(self.in_channels)# build laterals laterals [lateral_conv(inputs[i self.start_level])for i, lateral_conv in enumer…

QMidi Pro for Mac:打造您的专属卡拉OK体验

你是否曾经厌倦于在KTV里与朋友们争夺麦克风?是否想要在家中享受自定义的卡拉OK体验?现在,有了QMidi Pro for Mac,一切变得简单而愉快! QMidi Pro是一款功能强大的卡拉OK播放器,专为Mac用户设计。它充分利…

机器学习(二)什么是机器学习

文章目录 什么是机器学习1.4.1确定是否为机器学习问题 1.5基于规则学习和基于模型的学习1.5.1基于规则学习1.5.2基于模型学习1.5.3房价预测问题 1.6机器学习数据的基本概念1.6.1机器学习数据集基本概念强化实践 后记 什么是机器学习 在开始讲解术语概念之前我们首先梳理下之前…

互联网Java工程师面试题·Java 并发编程篇·第三弹

目录 26、什么是线程组,为什么在 Java 中不推荐使用? 27、为什么使用 Executor 框架比使用应用创建和管理线程好? 27.1 为什么要使用 Executor 线程池框架 27.2 使用 Executor 线程池框架的优点 28、java 中有几种方法可以实现一个线程…

天猫用户重复购买预测(速通二)

天猫用户重复购买预测(二) 模型训练分类相关模型1、逻辑回归分类模型2、K近邻分类模型3、高斯贝叶斯分类模型4、决策树分类模型5、集成学习分类模型 模型验证模型验证指标 特征优化特征选择技巧1、搜索算法2、特征选择方法 模型训练 分类相关模型 1、逻…

基于Springboot实现商务安全邮箱邮件收发系统项目【项目源码+论文说明】

基于Springboot实现商务安全邮箱邮件收发系统演示 摘要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。计算机的优势和普及使得商务安全邮箱的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,采用jsp技术…

Altium Designer | 5 - 网表导入及模块化布局设计(待续)

导入常见报错解决办法(unknow pin及绿色报错等) 在原理图界面 CtrlF搜索元器件位号 在PCB界面,CtrlF是左右翻转, 快捷键JC才是搜索元器件位号 报错信息: Unknow pin 1.没有封装 2.封装管脚缺失 3.元件库对应的管脚不对 ... 常见绿色报…

一键部署开源AI(人工智能对话模型)(支持显卡或CPU加内存运行)--ChatGLM2-6B

一、基本介绍: ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性: 更强大的性能: 基于 ChatGLM 初代模…

盘点15个前端开源项目,yyds!

目录 1、vue-color-avatar2、Reader3、Ant Design4、小游戏2048(Vue版)5、跳一跳6、lifeRestart(人生重开模拟器)7、GOVIEW8、vlife9、网易云音乐 API10、饿了么11、QQ音乐 API12、ChatGPT API13、Node.js 最佳实践14、Awesome No…

云计算革命:多云管理与混合云的实践指南

文章目录 云计算的演进多云管理的优势1. 降低风险2. 提高性能3. 降低成本4. 提高安全性 实践指南1. 选择适当的云提供商2. 使用云管理平台3. 实施一致的安全策略4. 数据管理和迁移5. 自动化和编排 混合云的实践1. 私有云和本地数据中心2. 数据一致性3. 安全性和合规性4. 负载均…

IDEA启动报错Failed to create JVM. JVM path的解决办法

今天启动IDEA时IDEA报错,提示如下。 if you already hava a JDK installed, define a JAVA_HOME variable in Computer > Systen Properties > System Settings > Environment Variables.Failed to create JVM. JVM path:D:\ideaIU2023.2.3\IntelliJ IDE…

表单页面风格如何选择?弹窗 or 抽屉 or 页面?

一、类型介绍 在 PC 端项目中,用户触发了某个操作,当需要向用户展示新的内容时,有很多交互方式,弹窗、抽屉、页面就是其中典型的3种。下面来分析下3种交互方式的优势、劣势和使用场景。 1.1 弹窗 定义:分为模态和非模态对话框2种,常用的为模态对话框。 优势:在不离开…

AI项目十六:YOLOP 训练+测试+模型评估

若该文为原创文章,转载请注明原文出处。 通过正点原子的ATK-3568了解到了YOLOP,这里记录下训练及测试及在onnxruntime部署的过程。 步骤:训练->测试->转成onnx->onnxruntime部署测试 一、前言 YOLOP是华中科技大学研究团队在2021年…

2023软件测试面试题(亲身经历)

在职,5年测试经验,坐标广州,有点想666。于是进行了几场线上面试… 1、python有哪些数据类型 数字型:int/float/bool/complex 字符串:str 列表:list 元组:tuple 字典:dict 集合&…

云原生应用安全性:解锁云上数据的保护之道

文章目录 云原生应用的崛起云原生应用安全性挑战1. **容器安全性**:容器技术如Docker和Kubernetes已成为云原生应用的核心组成部分。容器的安全性变得至关重要,以防止恶意容器的运行和敏感数据泄漏。2. **微服务安全性**:微服务架构引入了多个…

从零开始使用webpack搭建一个react项目

先做一个正常编译es6语法的webpack demo 1. 初始化package.json文件 npm init一路enter下去 2. 添加插件 {"name": "demo","version": "1.0.0","description": "","main": "index.js",&q…