JavaScript 基础教程

JavaScript 首页 JavaScript 路线图 JavaScript 概述 JavaScript 功能特性 JavaScript 启用 JavaScript 位置 JavaScript 语法 JavaScript Hello World JavaScript Console.log() JavaScript 注释 JavaScript 变量 JavaScript let 语句 JavaScript 常量 JavaScript 数据类型 JavaScript 类型转换 JavaScript 严格模式 JavaScript 保留关键字

JavaScript 运算符

JavaScript 运算符 JavaScript 算术运算符 JavaScript 比较运算符 JavaScript 逻辑运算符 JavaScript 位运算符 JavaScript 赋值运算符 JavaScript 条件运算符 JavaScript typeof 运算符 JavaScript 空值合并运算符 JavaScript 安全赋值运算符 JavaScript 删除运算符 JavaScript 逗号运算符 JavaScript 分组运算符 JavaScript Yield 运算符 JavaScript 展开运算符 JavaScript 幂运算符 JavaScript 运算符优先级

JavaScript 控制流

JavaScript If...Else JavaScript While 循环 JavaScript For 循环 JavaScript For...in JavaScript For...of JavaScript 循环控制 JavaScript Break 语句 JavaScript Continue 语句 JavaScript Switch Case JavaScript 用户定义迭代器

JavaScript 函数

JavaScript 函数 JavaScript 函数表达式 JavaScript 函数参数 JavaScript 默认参数 JavaScript Function() 构造函数 JavaScript 函数提升 JavaScript 自调用函数 JavaScript 箭头函数 JavaScript 函数调用 JavaScript 函数 call() 方法 JavaScript 函数 apply() 方法 JavaScript 函数 bind() 方法 JavaScript 闭包 JavaScript 变量作用域 JavaScript 全局变量 JavaScript 智能函数参数

JavaScript 对象

JavaScript Number JavaScript Boolean JavaScript Strings JavaScript Arrays JavaScript Date JavaScript DataView JavaScript Handler JavaScript Math JavaScript RegExp JavaScript Symbol JavaScript Sets JavaScript WeakSet JavaScript Maps JavaScript WeakMap JavaScript 可迭代对象 JavaScript Reflect JavaScript TypedArray JavaScript 模板字面量 JavaScript 带标签的模板

面向对象的 JavaScript

JavaScript 对象 JavaScript 类 JavaScript 对象属性 JavaScript 对象方法 JavaScript 静态方法 JavaScript 显示对象 JavaScript 对象访问器 JavaScript 对象构造函数 JavaScript 原生原型 JavaScript ES5 对象方法 JavaScript 封装 JavaScript 继承 JavaScript 抽象 JavaScript 多态 JavaScript 解构 JavaScript 解构赋值 JavaScript 对象解构 JavaScript 数组解构 JavaScript 嵌套解构 JavaScript 可选链式调用 JavaScript 全局对象 JavaScript Mixins (混合) JavaScript 代理

JavaScript 版本

JavaScript 历史 JavaScript 版本 JavaScript ES5 JavaScript ES6 ECMAScript 2016 ECMAScript 2017 ECMAScript 2018 ECMAScript 2019 ECMAScript 2020 ECMAScript 2021 ECMAScript 2022

JavaScript 异步

JavaScript 异步 JavaScript 回调函数 JavaScript Promises JavaScript Async/Await JavaScript Microtasks (微任务) JavaScript Promises JavaScript Promises 链 JavaScript 定时事件 JavaScript setTimeout() JavaScript setInterval()

JavaScript Cookies

JavaScript Cookies JavaScript Cookie 属性 JavaScript 删除 Cookies

JavaScript 浏览器 BOM

JavaScript 浏览器对象模型 JavaScript Window 对象 JavaScript Document 文档对象 JavaScript Screen 对象 JavaScript History 对象 JavaScript Navigator 对象 JavaScript Location 对象 JavaScript Console 对象

JavaScript Web APIs

JavaScript Web API JavaScript History API JavaScript Storage API JavaScript Forms API JavaScript Worker API JavaScript Fetch API JavaScript Geolocation API

JavaScript 事件

JavaScript 事件 JavaScript DOM 事件 JavaScript addEventListener() JavaScript 鼠标事件 JavaScript 键盘事件 JavaScript 表单事件 JavaScript 窗口/文档事件 JavaScript 事件委托 JavaScript 事件冒泡 JavaScript 事件捕获 JavaScript 自定义事件

JavaScript 错误处理

JavaScript 错误处理 JavaScript try...catch JavaScript 调试 JavaScript 自定义错误 JavaScript 扩展错误

JavaScript 重要关键字

JavaScript this 关键字 JavaScript void 关键字 JavaScript new 关键字 JavaScript var 关键字

JavaScript HTML DOM

JavaScript HTML DOM JavaScript DOM 方法 &属性 JavaScript DOM 文档 JavaScript DOM 元素 JavaScript DOM 属性 (Attr) JavaScript DOM 表单 JavaScript 修改 HTML JavaScript 修改 CSS JavaScript DOM 动画 JavaScript DOM 导航 JavaScript DOM 集合 JavaScript DOM NodeList JavaScript DOM DOMTokenList

JavaScript 高级章节

JavaScript 冒泡排序算法 JavaScript 循环引用错误 JavaScript 使用 Jest 进行代码测试 JavaScript CORS 处理 JavaScript 数据分析 JavaScript 死区 JavaScript 设计模式 JavaScript Engine 和 Runtime JavaScript 执行上下文 JavaScript 函数组合 JavaScript 不可变性 JavaScript Kaboom.js JavaScript 词法作用域 JavaScript 本地存储 JavaScript 记忆化 JavaScript 压缩 JS JavaScript 可变性 vs 不可变性 JavaScript 包管理器 JavaScript 解析 S 表达式 JavaScript 原型继承 JavaScript 响应式 JavaScript Require 函数 JavaScript Selection API JavaScript SessionStorage JavaScript SQL CRUD 操作 JavaScript 增强排序 JavaScript 临时死区 JavaScript 节流 JavaScript TRPC 库 JavaScript 真值和假值 JavaScript 上传文件 JavaScript 日期比较 JavaScript 递归 JavaScript 数据结构 JavaScript Base64 编码 JavaScript 回调函数 JavaScript 当前日期/时间 JavaScript 日期验证 JavaScript 过滤方法 JavaScript 生成颜色 JavaScript HTTP 请求 JavaScript 插入排序 JavaScript 延迟加载 JavaScript 链表 JavaScript 嵌套循环 JavaScript 空值检查 JavaScript 获取当前 URL JavaScript 图算法 JavaScript 高阶函数 JavaScript 空字符串检查 JavaScript 表单处理 JavaScript 函数式编程 JavaScript 形参 vs 实参 JavaScript 原型 JavaScript 响应式编程 JavaScript Reduce 方法 JavaScript Rest 运算符 JavaScript 短路 JavaScript 未定义检查 JavaScript 单元测试 JavaScript 验证 URL

JavaScript 杂项

JavaScript Ajax JavaScript 异步迭代 JavaScript Atomics 原子对象 JavaScript Rest 参数 JavaScript 页面重定向 JavaScript 对话框 JavaScript 页面打印 JavaScript 表单验证 JavaScript 动画 JavaScript 多媒体 JavaScript 图像映射 JavaScript 浏览器 JavaScript JSON JavaScript 多行字符串 JavaScript 日期格式 JavaScript 获取日期方法 JavaScript 设置日期方法 JavaScript 模块 JavaScript 动态导入 JavaScript BigInt JavaScript Blob JavaScript Unicode JavaScript 浅拷贝 JavaScript 调用堆栈 JavaScript 引用类型 JavaScript IndexedDB JavaScript 点击劫持攻击 JavaScript 柯里化 JavaScript 图形 JavaScript Canvas 画布 JavaScript 防抖 JavaScript 性能 JavaScript 代码风格指南

JavaScript 实用资源

JavaScript 面试题 JavaScript 速查表 JavaScript 函数


JavaScript - 数组

JavaScript Array 数组 对象允许您在单个变量中存储多个值。数组用于存储相同或不同数据类型的多个元素的顺序集合。在 JavaScript 中,数组是动态的,因此您无需在定义数组时指定其长度。 JavaScript 数组的大小在创建后可能会减小或增大。

语法

使用以下语法在 JavaScript 中创建数组对象 -

const arr = new Array(val1, val2, val3, ..., valN)

参数

  • val1, val2, val3, ..., valN - 它接受多个值作为参数,并用它们初始化数组。

返回值

返回一个数组对象。

注意 - 当您将单个数字参数传递给 Array() 构造函数时,它会定义一个包含未定义值的、参数长度相同的数组。数组的最大长度为 4,294,967,295。

您可以使用数组字面量在方括号内添加多个逗号分隔的元素来创建数组 -

const fruit = [ "apple", "orange", "mango" ];

您将使用序数来访问和设置数组中的值,如下所示。

fruits[0] 是第一个元素
fruits[1] 是第二个元素
fruits[2] 是第三个元素

JavaScript 数组参考

在 JavaScript 中,Array 对象允许使用单个变量名存储多个元素的集合。它提供了各种方法和属性来对数组执行操作。这里,我们列出了 Array 类的属性和方法。

JavaScript 数组属性

这里列出了 Array 对象的属性及其说明 -

序号 名称和说明
1

constructor

返回创建该对象的数组函数的引用。

2

length

反映数组中元素的数量。

JavaScript 数组方法

以下是 Array 对象的方法列表及其说明 -

数组静态方法

这些方法由 Array 类本身调用 -

Sr.No. Name &说明
1

from()

创建数组的浅拷贝。

2

isArray()

根据参数是否为数组返回布尔值。

3

Of()

根据多个参数创建数组。

数组实例方法

这些方法使用 Array 类的实例调用 -

Sr.No. 名称和说明
1

at()

从特定索引获取元素。

2

concat()

返回一个由该数组与另一个数组和/或值连接而成的新数组。

3

copyWithin()

将数组的一部分复制到同一数组的不同位置。

4

entries()

获取数组。

5

every()

如果此数组中的每个元素都满足提供的测试函数,则返回 true。

6

fill()

用静态值填充数组。

7

filter()

创建一个新数组,其中包含此数组中所有通过提供的过滤函数返回的元素正确。

8

find()

查找满足条件的元素。

9

findIndex()

查找满足条件的元素的索引。

10

findLast()

从最后一个元素开始查找满足条件的元素。

11

findLastIndex()

从最后一个元素开始查找满足条件的元素的索引。

12

flat()

展平数组。

13

flatMap()

展平数组后获取新数组数组。

14

forEach()

为数组中的每个元素调用一个函数。

15

Includes()

如果数组包含特定元素,则返回布尔值。

16

indexOf()

返回数组中元素的第一个(最小)索引,等于指定值,或如果未找到,则返回 -1。

17

join()

将数组的所有元素连接成一个字符串。

18

Keys()

返回一个包含每个数组元素键的数组迭代器。

19

lastIndexOf()

返回数组中元素的最后一个(最大)索引,等于指定值,或如果未找到,则返回 -1。

20

map()

创建一个新数组,并返回对数组中每个元素调用指定函数的结果。

21

pop()

从数组中删除最后一个元素并返回该元素。

22

push()

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

23

reduce()

同时对数组中的两个值(从左到右)应用函数,将其缩减为单个值。

24

reduceRight()

同时对数组中的两个值(从右到左)应用函数,将其缩减为单个值。

25

reverse()

反转数组元素的顺序——第一个元素变为最后一个元素,最后一个元素变为第一个元素。

26

shift()

从数组中移除第一个元素并返回该元素。

27

slice()

提取数组的一部分并返回一个新数组。

28

some()

如果此数组中至少有一个元素满足提供的测试函数,则返回 true。

29

toSorted()

按特定顺序对数组元素进行排序。

30

sort()

对数组元素进行排序。

31

splice()

向数组中添加和/或删除元素。

32

toLocaleString()

将数组元素转换为字符串。

33

toReversed()

返回数组的反转。

34

toSpliced()

此方法返回一个新数组,其中在给定索引处删除和/或替换了一些元素。

35

toString()

返回表示数组及其元素。

36

unshift()

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

37

values()

获取包含每个数组索引值的迭代器。

38

with()

此方法返回一个新数组,其中给定索引处的元素替换为给定值。

JavaScript 数组对象的基本示例

在以下示例中,我们演示了 JavaScript 数组对象的基本方法和属性的用法 -

示例(创建 JavaScript 数组对象)

在下面的示例中,数组 strs 使用作为 Array() 构造函数参数传递的字符串值进行初始化。

cars 数组包含 20 个未定义元素。如果传递多个数值,它将定义包含这些元素的数组,但需要注意将单个数值参数传递给 array() 构造函数。

<html>
<head>
   <title> JavaScript - Array() constructor </title>
</head>
<body>
   <p id = "demo"> </p>
   <script>
      const output = document.getElementById("demo");

      let strs = new Array("Hello", "World!", "Tutorials Point");
      output.innerHTML += "strs ==> " + strs + "<br>";

      let cars = new Array(20);
      output.innerHTML += "cars ==> " + cars + "<br>";
   </script>
</body>
</html>

输出

执行上述程序以查看所需的输出。

strs ==> Hello,World!,Tutorials Point
cars ==> ,,,,,,,,,,,,,,,,,,,

示例(使用数组字面量创建数组)

在下面的示例中,我们创建了不同的数组。arr1 数组包含数字,arr2 数组包含字符串,arr3 数组包含布尔值。

<html>
<head>
   <title> JavaScript - Array literals </title>
</head>
<body>
   <p id = "output"> </p>
   <script>
      const output = document.getElementById("output");

      const arr1 = [10, 40, 50, 60, 80, 90];  // Array of numbers
      const arr2 = ["Hello", "Hi", "How", "are", "you?"]; // Array of strings
      const arr3 = [true, false, true, true]; // Array of booleans

      output.innerHTML += "arr1 ==>  " + arr1 + "<br>";
      output.innerHTML += "arr2 ==>  " + arr2 + "<br>";
      output.innerHTML += "arr3 ==>  " + arr3 + "<br>";
   </script>
</body>
</html>

输出

执行上述程序,查看所需输出。

arr1 ==> 10,40,50,60,80,90
arr2 ==> Hello,Hi,How,are,you?
arr3 ==> true,false,true,true

访问 JavaScript 数组元素

数组索引从 0 开始。因此,您可以使用索引访问数组元素。

let number = arr[index]

在上述语法中,arr 是一个数组,index 是一个数字,我们需要从该数字位置访问数组元素。

示例

在下面的示例中,我们创建了一个数字数组,并从数组的第 0 个和第 2 个索引处访问元素。第 0 个索引处的元素为 1,第 2 个索引处的元素为 6。

<html>
<head>
   <title> JavaScript - Accessing array elements </title>
</head>
<body>
   <p id = "output"> </p>
   <script>
      const nums = [1, 5, 6, 8, 90];
      document.getElementById("output").innerHTML =
      "Element at 0th index is : " + nums[0] + "<br>" +
      "Element at 2nd index is : " + nums[2];
   </script>
</body>
</html>
输出
Element at 0th index is : 1
Element at 2nd index is : 6

JavaScript 数组长度

数组的 length 属性用于获取数组的长度。

let len = arr.length;

示例

在下面的示例中,length 属性返回 5,因为数组包含 5 个元素。

<html>
<head>
   <title> JavaScript - Array length </title>
</head>
<body>
   <p id = "output"> </p>
   <script>
      const nums = [1, 5, 6, 8, 90];
      document.getElementById("output").innerHTML = 
      "数组长度为 : " + nums.length;
   </script>
</body>
</html>
输出
数组长度为:5

向数组添加新元素

您可以使用 push() 方法将元素插入到数组末尾。另一种解决方案是将数组插入到等于数组长度的索引处。

arr.push(ele)
或
arr[arr.length] = ele;

在上述语法中,ele 是要插入到数组中的新元素。此处,如果数组长度为 N,则数组包含从 0 到 N1 索引的元素。因此,我们可以将新元素插入到第 N 个索引处。

示例

在下面的示例中,我们使用 push() 方法将 6 插入到数组中。此外,我们使用了长度属性将元素插入到末尾。

<html>
<body>
   <p id = "output"> </p>
   <script>
      const output = document.getElementById("output");
      const nums = [1, 2, 3, 4, 5];
      nums.push(6); // Inserting 6 at the end
      output.innerHTML += "更新后的数组为: " + nums + "<br>";
      nums[nums.length] = 7; // Inserting 7
      output.innerHTML += "更新后的数组为: " + nums + "<br>"
   </script>
</body>
</html>
输出

正如我们在输出中看到的,提供的元素已添加。

更新后的数组为:1,2,3,4,5,6
更新后的数组为:1,2,3,4,5,6,7

更新 JavaScript 数组元素

要更新任何数组元素,您可以访问数组索引并更改其值。

arr[index] = ele;

在上述语法中,index 是一个索引,我们需要使用 ele 值来更新某个值。

示例

在下面的示例中,我们更新数组中第一个索引处的元素。

<html>
<body>
   <p id = "output"> </p>
   <script>
      const nums = [1, 2, 3, 4, 5];
      nums[0] = 100; // Updating first element
      document.getElementById("output").innerHTML = 
      "更新后的数组为: " + nums;
   </script>
</body>
</html>
输出
更新后的数组为: 100,2,3,4,5

遍历 JavaScript 数组

您可以使用循环遍历每个数组元素。但是,也有一些内置方法可以遍历数组,我们将在后续章节中介绍。

for (let p = 0; p < nums.length; p++) {
    // 使用 nums[p] 访问数组
}

示例

在下面的代码中,数组包含 5 个数字。我们使用 for 循环遍历数组并打印每个元素。

但是,while 循环和 do-while 循环也可以用来遍历数组。

<html>
<body>
   <p id = "demo"> </p>
   <script>
      const output = document.getElementById("demo");
      const nums = [1, 2, 3, 4, 5];
      for (let p = 0; p < nums.length; p++) {
         output.innerHTML += "nums[" + p + "] ==> " + nums[p] + "<br>";
      }
   </script>
</body>
</html>

输出

nums[0] ==> 1
nums[1] ==> 2
nums[2] ==> 3
nums[3] ==> 4
nums[4] ==> 5