JavaScript 数组复习笔记
一、数组的基本概念
定义
- 数组是一种数据结构,用于存储一组有序的数据。在 JavaScript 中,数组可以存储任何类型的数据,包括数字、字符串、对象、函数等。
创建数组的方式
1. 数组字面量
- 语法:使用方括号
[]
来创建一个数组,在方括号内可以列出数组的元素。 - 实例:
let fruits = ['apple', 'banana', 'orange'];
console.log(fruits); // 输出:['apple', 'banana', 'orange']
2. Array 构造函数
- 语法:使用
new Array()
构造函数来创建一个数组,可以传入一个或多个参数来指定数组的元素。 - 实例:
let numbers = new Array(1, 2, 3);
console.log(numbers); // 输出:[1, 2, 3]
二、数组的属性和方法
1. 数组的长度
- 使用
length
属性可以获取数组的长度,即数组中元素的个数。 - 实例:
let fruits = ['apple', 'banana', 'orange'];
console.log(fruits.length); // 输出:3
2. 访问数组元素
- 可以使用索引来访问数组中的元素,索引从 0 开始。
- 实例:
let fruits = ['apple', 'banana', 'orange'];
console.log(fruits[0]); // 输出:apple
console.log(fruits[1]); // 输出:banana
console.log(fruits[2]); // 输出:orange
3. 修改数组元素
- 可以使用索引来修改数组中的元素。
- 实例:
let fruits = ['apple', 'banana', 'orange'];
fruits[1] = 'grape';
console.log(fruits); // 输出:['apple', 'grape', 'orange']
4. 添加数组元素
- 可以使用
push()
、unshift()
、splice()
等方法来添加数组元素。 - 实例:
let fruits = ['apple', 'banana', 'orange'];
fruits.push('grape'); // 在数组末尾添加元素
console.log(fruits); // 输出:['apple', 'banana', 'orange', 'grape']
fruits.unshift('pear'); // 在数组开头添加元素
console.log(fruits); // 输出:['pear', 'apple', 'banana', 'orange', 'grape']
fruits.splice(2, 0, 'kiwi'); // 在指定位置添加元素
console.log(fruits); // 输出:['pear', 'apple', 'kiwi', 'banana', 'orange', 'grape']
5. 删除数组元素
- 可以使用
pop()
、shift()
、splice()
等方法来删除数组元素。 - 实例:
let fruits = ['pear', 'apple', 'kiwi', 'banana', 'orange', 'grape'];
fruits.pop(); // 删除数组末尾的元素
console.log(fruits); // 输出:['pear', 'apple', 'kiwi', 'banana', 'orange']
fruits.shift(); // 删除数组开头的元素
console.log(fruits); // 输出:['apple', 'kiwi', 'banana', 'orange']
fruits.splice(1, 1); // 删除指定位置的元素
console.log(fruits); // 输出:['apple', 'banana', 'orange']
6. 遍历数组
- 可以使用
for
循环、for...of
循环、forEach()
方法等方式来遍历数组。 - 实例:
let fruits = ['apple', 'banana', 'orange'];
// 使用 for 循环遍历数组
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
// 使用 for...of 循环遍历数组
for (let fruit of fruits) {
console.log(fruit);
}
// 使用 forEach() 方法遍历数组
fruits.forEach(function(fruit) {
console.log(fruit);
});
7. 数组的排序和反转
- 可以使用
sort()
方法对数组进行排序,使用reverse()
方法对数组进行反转。 - 实例:
let numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
numbers.sort();
console.log(numbers); // 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
numbers.reverse();
console.log(numbers); // 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
8. 数组的连接和切片
- 可以使用
concat()
方法连接两个或多个数组,使用slice()
方法从数组中提取一部分元素。 - 实例:
let fruits1 = ['apple', 'banana', 'orange'];
let fruits2 = ['grape', 'kiwi', 'pear'];
let combinedFruits = fruits1.concat(fruits2);
console.log(combinedFruits); // 输出:['apple', 'banana', 'orange', 'grape', 'kiwi', 'pear']
let slicedFruits = combinedFruits.slice(2, 5);
console.log(slicedFruits); // 输出:['orange', 'grape', 'kiwi']
三、高级数组操作
1. 数组的映射
- 可以使用
map()
方法对数组中的每个元素进行操作,并返回一个新的数组。 - 实例:
let numbers = [1, 2, 3, 4, 5];
let doubledNumbers = numbers.map(function(number) {
return number * 2;
});
console.log(doubledNumbers); // 输出:[2, 4, 6, 8, 10]
2. 数组的过滤
- 可以使用
filter()
方法对数组中的元素进行筛选,并返回一个新的数组。 - 实例:
let numbers = [1, 2, 3, 4, 5];
let evenNumbers = numbers.filter(function(number) {
return number % 2 === 0;
});
console.log(evenNumbers); // 输出:[2, 4]
3. 数组的归约
- 可以使用
reduce()
方法对数组中的元素进行归约操作,将数组中的元素归约为一个单一的值。 - 实例:
let numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce(function(accumulator, currentValue) {
return accumulator + currentValue;
}, 0);
console.log(sum); // 输出:15
4. 数组的扁平化
- 可以使用
flat()
方法将多维数组扁平化,即将嵌套的数组展开为一维数组。 - 实例:
let nestedArray = [1, [2, [3, 4], 5], 6];
let flattenedArray = nestedArray.flat();
console.log(flattenedArray); // 输出:[1, 2, [3, 4], 5, 6]
flattenedArray = nestedArray.flat(2);
console.log(flattenedArray); // 输出:[1, 2, 3, 4, 5, 6]
通过对 JavaScript 数组的学习和掌握,可以更加高效地处理数据集合,实现各种复杂的算法和功能。同时,需要注意数组的性能和内存使用情况,避免创建过大的数组和进行过多的数组操作,以提高程序的性能和可维护性。