
JavaScript数组最全整理(包含ES6)
发布日期:2021-05-14 15:47:22
浏览次数:23
分类:精选文章
本文共 3457 字,大约阅读时间需要 11 分钟。
创建数组
在 JavaScript 中,创建数组有三种主要方式:构造函数、字面量、from() 方法 和 of() 方法。每种方法都有其独特的用途和适用场景。
1. 使用 Array 构造函数
通过 new Array()
创建数组最简单。可以传入参数来指定数组的长度或内容:
- 只传入一个数字:
new Array(5)
创建长度为 5 的空数组。 - 传入多个值:
new Array("a", 2, { name: "b" })
创建包含不同类型元素的数组。
示例:
let arr = new Array(5); // 创建长度为 5 的空数组let arr2 = new Array("a", 2, { name: "b" }); // 创建包含不同类型元素的数组
2. 使用 字面量 形式
通过直接写出数组的形式来创建:
let arr = [1, 2, 3]; // 创建包含 1, 2, 3 的数组let arrEmpty = []; // 创建空数组let arrWithHole = [1, , , 5]; // 创建包含空位的数组
3. 使用 from() 方法
Array.from()
方法可以将类数组对象转换为数组。常见用途包括将字符串分割成字符数组、处理 Map 和 Set 等:
// 将字符串分割成字符数组console.log(Array.from("JavaScript")); // ["J", "a", "v", "a", "S", "c", "r", "i", "p", "t"]// 处理 Mapconst m = new Map().set(1, 2).set(3, 4);console.log(Array.from(m)); // [[1, 2], [3, 4]]// 处理 Setconst s = new Set([1, 2, 3, 4]);console.log(Array.from(s)); // [1, 2, 3, 4]
4. 使用 of() 方法
Array.of()
方法用于将多个值转换为数组:
console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]console.log(Array.of(undefined, null)); // [undefined, null]
数组空位
在 ES6 中,空位 (,,
) 被视为有效的元素,其值为 undefined
:
let options = [1, , , 5];console.log(options.length); // 5console.log(options); // [1, undefined, undefined, undefined, 5]
数组索引
数组索引从 0 开始,支持正数、负数和大于数组长度的索引:
- 正数索引:访问数组元素。
- 负数索引:从数组末尾开始计数。
- 大于数组长度的索引:返回
undefined
。
示例:
let arr = ["apple", "ball", "color"];console.log(arr[0]); // "apple"console.log(arr[3]); // undefinedconsole.log(arr[-1]); // "color"
数组长度
数组长度属性是可写的,可以通过修改 length
属性来添加或删除元素:
let arr = ["apple", "ball", "color"];console.log(arr.length); // 3// 添加元素arr[100] = "dog";console.log(arr.length); // 101
检测数组
使用 Array.isArray()
方法来检测对象是否为数组:
if (Array.isArray(arr)) { // 处理数组}
迭代器方法
ES6 提供了 keys()
, values()
, 和 entries()
方法来获取数组的迭代器:
const arr = ["apple", "ball", "color"];console.log(arr.keys()); // ArrayIteratorconsole.log(arr.values()); // ArrayIteratorconsole.log(arr.entries()); // ArrayIterator
复制和填充方法
fill()
方法用于批量填充数组元素。copyWithin()
方法用于浅复制数组部分内容到指定位置。
示例:
let arr = [0, 0, 0, 0, 0];arr.fill(5); // [5, 5, 5, 5, 5]arr.fill(0); // [0, 0, 0, 0, 0]arr.fill(5, 3); // [0, 0, 5, 5, 5]
转换方法
toString()
方法返回数组字符串形式。join()
方法返回数组元素用指定分隔符连接的字符串。
示例:
let colors = ["red", "blue", "green"];console.log(colors.toString()); // "red,blue,green"console.log(colors.join("|")); // "red|blue|green"
栈方法
push()
方法用于从数组尾部添加元素。pop()
方法用于从数组尾部删除元素。
示例:
let arr = ["apple", "ball", "color"];console.log(arr.push("dog")); // 4console.log(arr.pop()); // "color"
队列方法
shift()
方法用于从数组首部删除元素。unshift()
方法用于从数组首部添加元素。
示例:
let arr = ["apple", "ball", "color"];console.log(arr.shift()); // "apple"console.log(arr.unshift("dog")); // 4
排序方法
reverse()
方法用于反向排序数组。sort()
方法用于按升序或降序排序数组。
示例:
let values = [1, 2, 3, 4, 5];console.log(values.reverse()); // [5, 4, 3, 2, 1]console.log(values.sort((a, b) => a - b)); // [1, 2, 3, 4, 5]
搜索和位置方法
indexOf()
,lastIndexOf()
, 和includes()
方法用于查找数组中元素。find()
和findIndex()
方法用于查找满足条件的元素。
示例:
let num = [1, 2, 3, 4, 5, 4, 3, 2, 1];console.log(num.indexOf(4)); // 3console.log(num.find((v) => v === 4)); // 4
迭代方法
every()
方法用于判断数组中所有元素是否满足条件。some()
方法用于判断数组中是否存在满足条件的元素。filter()
方法用于过滤数组,保留满足条件的元素。forEach()
方法用于遍历数组,但无返回值。map()
方法用于遍历数组,返回新数组。
示例:
let num = [1, 2, 3, 4, 5, 4, 3, 2, 1];console.log(num.every(v => v > 2)); // falseconsole.log(num.some(v => v > 2)); // true
归并方法
reduce()
和reduceRight()
方法用于将数组归并成单个值。
示例:
let values = [1, 2, 3, 4, 5];let sum = values.reduce((acc, curr) => acc + curr, 0); // 15
通过以上方法,可以对数组进行创建、操作和处理,充分利用数组的强大功能。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月22日 21时18分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CentOS7利用Systemd添加用户自定义系统服务
2019-03-12
懒人HTML5笔记-1
2019-03-12
两台服务器http方式共享yum软件仓库
2019-03-12
进程间同步
2019-03-12
团队背包(team)
2019-03-12
简单方法实现无刷新提交Form表单
2019-03-12
java字节流与字符流的区别
2019-03-12
Spring开发包介绍
2019-03-12
Mysql 批量杀死进程
2019-03-12
spring tx:advice 和 aop:config 配置事务
2019-03-12
修改layui的后台模板的左侧导航栏可以伸缩
2019-03-12
Mybatis Generator最完整配置详解
2019-03-12
报错:For input string
2019-03-12
ThreadLocal源码分析解密
2019-03-12
【Java并发编程】并发编程大合集
2019-03-12
Ubuntu初始化root密码
2019-03-12
编译android源代码(aosp)
2019-03-12
verilog一些小知识点注意事项集合
2019-03-12