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"]
// 处理 Map
const m = new Map().set(1, 2).set(3, 4);
console.log(Array.from(m)); // [[1, 2], [3, 4]]
// 处理 Set
const 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); // 5
console.log(options); // [1, undefined, undefined, undefined, 5]

数组索引

数组索引从 0 开始,支持正数、负数和大于数组长度的索引:

  • 正数索引:访问数组元素。
  • 负数索引:从数组末尾开始计数。
  • 大于数组长度的索引:返回 undefined

示例:

let arr = ["apple", "ball", "color"];
console.log(arr[0]); // "apple"
console.log(arr[3]); // undefined
console.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()); // ArrayIterator
console.log(arr.values()); // ArrayIterator
console.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")); // 4
console.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)); // 3
console.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)); // false
console.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

通过以上方法,可以对数组进行创建、操作和处理,充分利用数组的强大功能。

上一篇:JS中onload事件与JQuery中ready的区别
下一篇:谈一谈对 TailwindCSS 的看法

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月22日 21时18分48秒