JavaScript Array(数组)对象

JavaScript数组对象完全指南

JavaScript 数组完全指南

专为编程新手设计,用最通俗的语言理解JavaScript数组的核心概念与用法

什么是数组?

想象数组就像一个储物柜系统:

  • 每个储物柜(数组元素)可以存放任何东西(数字、文本、对象等)
  • 每个储物柜都有编号(索引),从0开始
  • 你可以随时添加、取出或更换储物柜里的物品
  • 整个储物柜系统可以扩大或缩小

在编程中,数组是存储多个值的有序集合,是JavaScript中最常用的数据结构之一。

数组结构可视化

下面是一个简单的数组 let fruits = ['苹果', '香蕉', '橙子', '葡萄'];

索引 0
苹果
索引 1
香蕉
索引 2
橙子
索引 3
葡萄

一、创建数组的三种方式

1. 字面量方式(最常用)

使用方括号 [] 直接创建数组

// 创建空数组
let emptyArr = [];

// 创建包含数字的数组
let numbers = [1, 2, 3, 4, 5];

// 创建包含不同类型数据的数组
let mixed = [1, “苹果”, true, {name: “小明”}, [7, 8, 9]];

2. 构造函数方式

使用 new Array() 创建

// 创建空数组
let arr1 = new Array();

// 创建包含5个元素的数组
let arr2 = new Array(5);

// 创建包含具体元素的数组
let arr3 = new Array(“苹果”, “香蕉”, “橙子”);

3. Array.of() 方法

解决构造函数创建单个数字数组的问题

// 创建一个包含单个数字的数组
let arr = Array.of(5); // [5] 而不是长度为5的空数组

二、数组基本操作

1. 访问元素

通过索引(从0开始)访问

let fruits = [‘苹果’, ‘香蕉’, ‘橙子’];
console.log(fruits[0]); // “苹果”
console.log(fruits[2]); // “橙子”
console.log(fruits[3]); // undefined (不存在)

2. 修改元素

直接给指定索引位置赋值

fruits[1] = ‘芒果’;
console.log(fruits); // [‘苹果’, ‘芒果’, ‘橙子’]

3. 数组长度

使用 length 属性获取数组元素数量

console.log(fruits.length); // 3

// 修改length可以改变数组大小
fruits.length = 2;
console.log(fruits); // [‘苹果’, ‘芒果’] (橙子被删除)

4. 检查是否为数组

// 使用Array.isArray()方法
console.log(Array.isArray(fruits)); // true
console.log(Array.isArray(“hello”)); // false

三、数组修改方法

1. 添加元素

  • push() – 在数组末尾添加一个或多个元素
  • unshift() – 在数组开头添加一个或多个元素
let arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
arr.unshift(0); // [0, 1, 2, 3, 4]
arr.push(5, 6); // [0, 1, 2, 3, 4, 5, 6]

2. 删除元素

  • pop() – 删除并返回数组的最后一个元素
  • shift() – 删除并返回数组的第一个元素
let arr = [‘A’, ‘B’, ‘C’, ‘D’];
arr.pop(); // 返回 ‘D’,arr变为 [‘A’, ‘B’, ‘C’]
arr.shift(); // 返回 ‘A’,arr变为 [‘B’, ‘C’]

3. splice() – 万能方法

添加、删除或替换数组中的元素

// 语法:array.splice(start, deleteCount, item1, item2, …)
let colors = [‘红’, ‘绿’, ‘蓝’];

// 删除:从索引1开始删除1个元素
colors.splice(1, 1); // colors变为 [‘红’, ‘蓝’]

// 添加:从索引1开始,删除0个元素,添加新元素
colors.splice(1, 0, ‘黄’, ‘紫’); // colors变为 [‘红’, ‘黄’, ‘紫’, ‘蓝’]

// 替换:从索引1开始,删除1个元素,添加新元素
colors.splice(1, 1, ‘橙’); // colors变为 [‘红’, ‘橙’, ‘紫’, ‘蓝’]

四、数组遍历方法

1. forEach()

为每个数组元素执行一次函数

[1, 2, 3].forEach(function(item, index) {
  console.log(index + ‘: ‘ + item);
});
// 输出:
// 0: 1
// 1: 2
// 2: 3

2. map()

创建新数组,结果是原数组每个元素调用函数后的返回值

let numbers = [1, 2, 3];
let squares = numbers.map(n => n * n);
console.log(squares); // [1, 4, 9]

3. filter()

创建新数组,包含通过函数测试的所有元素

let nums = [1, 2, 3, 4, 5, 6];
let evens = nums.filter(n => n % 2 === 0);
console.log(evens); // [2, 4, 6]

4. find() 和 findIndex()

查找符合条件的第一个元素或其索引

let users = [
  {id: 1, name: ‘小明’},
  {id: 2, name: ‘小红’},
  {id: 3, name: ‘小刚’}
];

let user = users.find(u => u.id === 2);
console.log(user.name); // “小红”

let index = users.findIndex(u => u.name === ‘小刚’);
console.log(index); // 2

五、数组查找与判断

1. includes()

判断数组是否包含某个值

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

2. indexOf() 和 lastIndexOf()

查找元素在数组中的位置(不存在返回-1)

let arr = [7, 8, 9, 8, 10];
arr.indexOf(8); // 1 (第一次出现)
arr.lastIndexOf(8); // 3 (最后一次出现)
arr.indexOf(12); // -1 (未找到)

3. some() 和 every()

测试数组元素是否满足条件

// some: 至少有一个元素满足条件
[1, 2, 3].some(x => x > 2); // true

// every: 所有元素都满足条件
[1, 2, 3].every(x => x > 0); // true
[1, 2, 3].every(x => x > 1); // false

六、数组转换与排序

1. join()

将数组所有元素连接成字符串

[‘Fire’, ‘Air’, ‘Water’].join(); // “Fire,Air,Water”
[‘Fire’, ‘Air’, ‘Water’].join(”); // “FireAirWater”
[‘Fire’, ‘Air’, ‘Water’].join(‘-‘);// “Fire-Air-Water”

2. toString()

返回数组的字符串表示(逗号分隔)

[1, 2, ‘a’, ‘1a’].toString(); // “1,2,a,1a”

3. sort()

对数组元素进行排序(默认按字符串Unicode码点)

// 默认排序(字符串)
[‘Google’, ‘Apple’, ‘Microsoft’].sort();
// [‘Apple’, ‘Google’, ‘Microsoft’]

[10, 20, 1, 2].sort(); // [1, 10, 2, 20](注意!)

// 数字排序需自定义函数
[10, 20, 1, 2].sort((a, b) => a – b); // [1, 2, 10, 20]

4. reverse()

反转数组中元素的顺序

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

数组方法总结

JavaScript数组提供了30+种方法,掌握核心方法即可应对大多数场景

// 添加/删除:push/pop/unshift/shift/splice
// 遍历:forEach/map/filter/find/reduce
// 查找:indexOf/lastIndexOf/includes
// 判断:some/every
// 转换:join/toString
// 排序:sort/reverse
// 其他:concat/slice/Array.isArray

JavaScript数组指南 | 编程小白的学习助手 | 建议配合实际代码练习加深理解

提示:数组方法不会改变原数组的称为”纯函数”(如map、filter、concat)

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部