JavaScript数组全攻略

本文深入解析JavaScript数组的各个方面,包括创建方法(字面量、构造函数、Array.of和Array.from)、读写元素、长度管理、添加与删除、splice操作、遍历技巧(for循环、for...of、forEach等)、搜索函数、排序、转换和高级操作(如map、filter、reduce)。旨在帮助开发者全面掌握数组的使用。
摘要由CSDN通过智能技术生成

🧑‍🎓 个人主页:《爱蹦跶的大A阿》

🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》《krpano》

​ 

目录

✨ 前言

数组的定义

创建数组

1. 数组字面量

2. Array构造函数

3. Array.of()

4. Array.from()

读取元素

写入元素

数组长度

清空数组

添加元素

删除元素

splice()

遍历数组

for循环

for...of循环

forEach()

map()/filter()/reduce()

搜索元素

indexOf()/lastIndexOf()

find()

findIndex()

includes()

排序数组

reverse()

sort()

数组和字符串转换

join()

split()

映射数组

map()

过滤数组

filter()

规约数组

reduce()

拷贝数组

浅拷贝

深拷贝

多维数组

稀疏数组

类数组对象

✨ 结语


 

✨ 前言

        对象允许存储键值集合,这很好。

        但很多时候我们发现还需要 有序集合,里面的元素都是按顺序排列的。例如,我们可能需要存储一些列表,比如用户、商品以及 HTML 元素等。

        这里使用对象就不是很方便了,因为对象不能提供能够管理元素顺序的方法。我们不能在已有的元素“之间”插入一个新的属性。这种场景下对象就不太适用了。

        这时一个特殊的数据结构数组(Array)就派上用场了,它能存储有序的集合。

数组的定义

数组是存储数据的有序列表,每个元素都有对应的索引位置。

创建数组

1. 数组字面量

使用[]创建数组最简单直观:

let arr = [1, 2, 3];

2. Array构造函数

可以指定数组长度或元素:

let arr1 = new Array(3); // 创建长度为3的空数组

let arr2 = new Array(1, 2, 3); // 使用参数初始化数组

3. Array.of()

将参数转换为数组元素:

let arr = Array.of(1, 2, 3); // [1, 2, 3]

4. Array.from()

将类数组对象或可迭代对象转换为数组:

let arr = Array.from('foo'); // ['f', 'o', 'o']

 

读取元素

可以通过索引读取元素,从0开始:

let arr = [1, 2, 3];

let first = arr[0]; // 1
let second = arr[1]; // 2

写入元素

同样通过索引可以修改写入元素:

let arr = [1, 2, 3];

arr[0] = 'first'; 
arr[1] = 'second';

数组长度

length属性表示当前数组的长度:

let arr = [1, 2, 3];

arr.length; // 3

清空数组

将length重置为0即可清空数组:

let arr = [1, 2, 3];
arr.length = 0; // 清空数组

 

添加元素

使用push()和unshift()可以向数组末尾或开头添加一个或多个元素:

let arr = [1, 2];

arr.push(3); // 尾部添加一个元素
arr.unshift(0); // 头部添加一个元素

删除元素

使用pop()和shift()可以删除数组末尾或开头的元素:

let arr = [1, 2, 3];

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

 

splice()

splice()可以删除任意位置的元素:

let arr = [1, 2, 3, 4];

arr.splice(2, 1); // 从索引2开始删除1个元素

splice()也可以实现插入、替换等功能。 

遍历数组

遍历数组常用的方法:

for循环

使用传统的for循环根据索引遍历:

for(let i = 0; i < arr.length; i++) {
  // arr[i] 访问元素
}

 

for...of循环

使用for...of直接遍历元素:

for(let a of arr) {
  // a 为数组元素
}

forEach()

数组的forEach()方法遍历:

arr.forEach(function(element) {
  // element为数组元素
});

 

map()/filter()/reduce()

数组的高阶函数也可以遍历数组

搜索元素

indexOf()/lastIndexOf()

搜索元素第一次或最后一次出现的索引:

let arr = [1, 2, 1];
arr.indexOf(1); // 0
arr.lastIndexOf(1); // 2

find()

找到第一个满足条件的元素:

let found = arr.find(x => x > 2);

 

findIndex()

找到第一个满足条件元素的索引:

let index = arr.findIndex(x => x > 2);

includes()

检查数组是否包含某元素:

[1,2,3].includes(2); // true

 

排序数组

reverse()

反转数组顺序:

let arr = [1, 2, 3];
arr.reverse(); // [3, 2, 1]

sort()

默认按字符串排序:

let arr = [3, 1, 2];  
arr.sort(); // [1, 2, 3]

 可以传入比较函数自定义排序逻辑。

数组和字符串转换

join()

join()可以将数组转换为字符串:

let arr = [1, 2, 3];

arr.join(); // "1,2,3"
arr.join('-'); // "1-2-3"

split()

split()可以将字符串分割成数组:

"a-b-c".split('-'); // ['a', 'b', 'c']

 

映射数组

map()

map()将数组元素映射到新数组:

let arr = [1, 2, 3]; 

let mapped = arr.map(x => x * 2); // [2, 4, 6]

不会改变原数组

过滤数组

filter()

filter()过滤数组元素:

let arr = [1, 2, 3];

let filtered = arr.filter(x => x > 2); // [3]

 

规约数组

reduce()

reduce()可以将数组组合为单个值:

let arr = [1, 2, 3];

let sum = arr.reduce((a, b) => a + b); // 6

拷贝数组

浅拷贝

使用slice()可以浅拷贝数组:

let arr2 = arr1.slice();

 

深拷贝

可以递归实现深拷贝:

function deepCopy(arr) {
  // 递归拷贝算法
}

多维数组

数组可以包含其他数组,形成多维数组:

let arr = [
  [1, 2],
  [3, 4]
];

 访问多维数组需要多层索引:

arr[1][0]; // 返回3

遍历多维数组需要嵌套循环:

for (let i = 0; i < arr.length; i++) {
  for (let j = 0; j < arr[i].length; j++) {
    // 遍历 sub array
  }
}

 

稀疏数组

当数组的元素不连续时,就会形成稀疏数组:

let arr = [];
arr[0] = 1;
arr[3] = 4;

数组的长度为4,但中间有空隙。

遍历稀疏数组需要检查元素是否存在:

for(let i = 0; i < arr.length; i++) {
  if(arr.hasOwnProperty(i)) {
    // 处理存在的元素
  }
}

 

类数组对象

拥有长度和索引元素的对象,类似于数组:

let obj = {
  0: 'first',
  1: 'second',
  length: 2
};

可以使用Array.from()转换为数组。 

✨ 结语

        

        本文全面介绍了JavaScript数组的各种功能点,现做一个简要总结。

        数组是一种存储数据的有序列表,可以通过索引进行访问。我们首先介绍了数组的各种创建方式。

        然后详细讲解了数组元素的读取和写入,以及获取数组长度和清空数组的方法。

        对于修改数组,我们涵盖了尾部/头部添加,中间删除,splice的用法。

        遍历数组常用的有for循环、forEach、for...of等。搜索数组可以用indexOf、find、includes等。

        排序数组有reverse和sort两种方法。转换数组可以用join和split。

        映射数组可以用map实现,过滤可以用filter实现。reduce可以将数组规约为一个值。

        拷贝数组有浅拷贝和深拷贝之分。多维数组和稀疏数组也需要特殊处理。

        这篇文章涵盖了数组的全方位用法分析,提供详细的代码示例,旨在成为JavaScript数组的完整指南。

        如果对数组的任何操作或用法不清楚,都欢迎在评论区提出,我会继续补充解释。希望这篇全面解析可以帮助大家全面掌握JavaScript数组的使用。

  • 48
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱蹦跶的大A阿

你的打赏就是我蹦跶的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值