在 JavaScript 中,数组 是一种用来存储多个值的集合。数组是一种对象(Object
),但它的元素具有顺序。你可以通过索引来访问数组的元素(从 0 开始)。数组可以存储任何类型的值,如数字、字符串、对象、甚至其他数组。
1. 创建数组
1.1 使用 Array
构造函数
// 创建空数组
let arr1 = new Array();
// 创建具有指定长度的数组
let arr2 = new Array(5); // 长度为 5 的空数组
// 创建包含元素的数组
let arr3 = new Array(1, 2, 3, 4, 5);
console.log(arr3); // 输出:[1, 2, 3, 4, 5]
1.2 使用字面量表示法(推荐方式)
let arr1 = []; // 空数组
let arr2 = [1, 2, 3, 4, 5]; // 包含初始值的数组
console.log(arr2); // 输出:[1, 2, 3, 4, 5]
2. 访问数组元素
数组的元素通过 索引 访问,索引是从 0 开始的。
let arr = [10, 20, 30, 40, 50];
console.log(arr[0]); // 输出:10
console.log(arr[3]); // 输出:40
3. 数组的常用方法
3.1 push()
和 pop()
(添加和删除元素)
push()
向数组的末尾添加一个或多个元素,并返回数组的 新长度。pop()
从数组的末尾删除一个元素,并返回被删除的元素。
let arr = [1, 2, 3];
arr.push(4, 5); // 向末尾添加元素 4 和 5
console.log(arr); // 输出:[1, 2, 3, 4, 5]
let lastElement = arr.pop(); // 删除末尾元素 5
console.log(lastElement); // 输出:5
console.log(arr); // 输出:[1, 2, 3, 4]
3.2 shift()
和 unshift()
(在开头添加和删除元素)
shift()
从数组的开头删除一个元素,并返回被删除的元素。unshift()
向数组的开头添加一个或多个元素,并返回数组的 新长度。
let arr = [1, 2, 3];
arr.unshift(0); // 向开头添加元素 0
console.log(arr); // 输出:[0, 1, 2, 3]
let firstElement = arr.shift(); // 删除开头元素 0
console.log(firstElement); // 输出:0
console.log(arr); // 输出:[1, 2, 3]
3.3 concat()
(连接数组)
concat()
方法用于连接两个或多个数组,返回一个新数组,不修改原数组。
let arr1 = [1, 2];
let arr2 = [3, 4];
let newArr = arr1.concat(arr2); // 连接两个数组
console.log(newArr); // 输出:[1, 2, 3, 4]
3.4 join()
(将数组转换为字符串)
join()
方法将数组的所有元素连接成一个字符串,默认使用逗号 ,
作为分隔符。
let arr = [1, 2, 3, 4];
let str = arr.join("-"); // 使用 "-" 连接
console.log(str); // 输出:"1-2-3-4"
3.5 slice()
和 splice()
(提取和删除元素)
slice()
提取数组的一个片段,返回一个新数组,原数组不变。splice()
从数组中删除或替换元素,修改原数组。
let arr = [1, 2, 3, 4, 5];
// slice() 提取数组的一部分
let slicedArr = arr.slice(1, 3); // 提取索引 1 到 3(不包括 3)
console.log(slicedArr); // 输出:[2, 3]
// splice() 删除和替换元素
arr.splice(1, 2); // 从索引 1 开始,删除 2 个元素
console.log(arr); // 输出:[1, 4, 5]
3.6 forEach()
(遍历数组)
forEach()
方法用于对数组中的每个元素执行给定的函数。
let arr = [1, 2, 3, 4];
arr.forEach(function(element, index) {
console.log(index, element);
});
// 输出:
// 0 1
// 1 2
// 2 3
// 3 4
3.7 map()
(转换数组)
map()
方法返回一个新数组,数组中的每个元素都通过回调函数处理后生成。
let arr = [1, 2, 3, 4];
let doubledArr = arr.map(function(num) {
return num * 2;
});
console.log(doubledArr); // 输出:[2, 4, 6, 8]
3.8 filter()
(过滤数组)
filter()
方法返回一个新数组,包含所有通过回调函数测试的元素。
let arr = [1, 2, 3, 4, 5];
let evenArr = arr.filter(function(num) {
return num % 2 === 0; // 只保留偶数
});
console.log(evenArr); // 输出:[2, 4]
3.9 reduce()
和 reduceRight()
(累积计算)
reduce()
方法通过回调函数累计数组元素的值。
let arr = [1, 2, 3, 4];
let sum = arr.reduce(function(acc, currentValue) {
return acc + currentValue;
}, 0); // 初始值为 0
console.log(sum); // 输出:10
3.10 find()
(查找元素)
find()
方法返回数组中第一个符合条件的元素,如果没有符合条件的元素,返回 undefined
。
let arr = [5, 10, 15, 20];
let found = arr.find(function(element) {
return element > 10;
});
console.log(found); // 输出:15
4. 数组的其他特性
4.1 数组长度(length
)
数组有一个内置的属性 length
,它表示数组的元素个数。
let arr = [1, 2, 3, 4, 5];
console.log(arr.length); // 输出:5
4.2 多维数组
数组中的元素也可以是数组,因此可以创建多维数组。
let arr = [[1, 2], [3, 4], [5, 6]];
console.log(arr[0]); // 输出:[1, 2]
console.log(arr[0][1]); // 输出:2
4.3 数组的排序(sort()
)
sort()
方法用于将数组中的元素按字母顺序或数值顺序排序。
let arr = [3, 1, 4, 2];
arr.sort(function(a, b) {
return a - b; // 升序排序
});
console.log(arr); // 输出:[1, 2, 3, 4]
5. 总结
JavaScript 中的数组非常灵活,可以存储任何类型的数据。常见的数组操作如添加、删除、查找、遍历、排序等都可以通过各种方法实现。掌握这些常用方法能够帮助你更高效地处理数组相关的任务。
如果你有其他具体问题,或者需要进一步的解释,欢迎随时提问!
发表回复