JavaScript Array 对象

Array 是 JavaScript 中的一种内置对象,用来存储有序的数据集合(元素)。它可以包含不同类型的数据,例如数字、字符串、对象,甚至是其他数组。数组可以动态地调整大小,并且支持对元素的访问、添加、删除等操作。

1. 创建数组

  • 使用数组字面量(推荐)let fruits = ["Apple", "Banana", "Cherry"]; console.log(fruits); // ["Apple", "Banana", "Cherry"]
  • 使用 new Array() 构造函数let fruits = new Array("Apple", "Banana", "Cherry"); console.log(fruits); // ["Apple", "Banana", "Cherry"]
  • 使用 new Array(length) 来创建一个指定长度的空数组let arr = new Array(3); // 创建一个具有3个空位的数组 console.log(arr); // [ <3 empty items> ]

2. 访问和修改数组元素

  • 访问数组元素let fruits = ["Apple", "Banana", "Cherry"]; console.log(fruits[0]); // Apple
  • 修改数组元素fruits[1] = "Blueberry"; console.log(fruits); // ["Apple", "Blueberry", "Cherry"]
  • 访问数组的长度let fruits = ["Apple", "Banana", "Cherry"]; console.log(fruits.length); // 3

3. 常用数组方法

  • push():向数组末尾添加一个或多个元素,返回新数组的长度。 let fruits = ["Apple", "Banana"]; fruits.push("Cherry"); console.log(fruits); // ["Apple", "Banana", "Cherry"]
  • pop():删除数组末尾的元素,并返回该元素。 let fruits = ["Apple", "Banana", "Cherry"]; let removed = fruits.pop(); console.log(removed); // Cherry console.log(fruits); // ["Apple", "Banana"]
  • shift():删除数组开头的元素,并返回该元素。 let fruits = ["Apple", "Banana", "Cherry"]; let removed = fruits.shift(); console.log(removed); // Apple console.log(fruits); // ["Banana", "Cherry"]
  • unshift():向数组开头添加一个或多个元素,返回新数组的长度。 let fruits = ["Banana", "Cherry"]; fruits.unshift("Apple"); console.log(fruits); // ["Apple", "Banana", "Cherry"]
  • concat():连接两个或多个数组,返回新数组。 let fruits = ["Apple", "Banana"]; let moreFruits = ["Cherry", "Date"]; let allFruits = fruits.concat(moreFruits); console.log(allFruits); // ["Apple", "Banana", "Cherry", "Date"]
  • slice():返回数组的一部分(不修改原数组)。 let fruits = ["Apple", "Banana", "Cherry", "Date"]; let sliced = fruits.slice(1, 3); console.log(sliced); // ["Banana", "Cherry"]
  • splice():从数组中添加或删除元素(会修改原数组)。 let fruits = ["Apple", "Banana", "Cherry", "Date"]; fruits.splice(2, 1, "Mango", "Pineapple"); console.log(fruits); // ["Apple", "Banana", "Mango", "Pineapple", "Date"]
  • indexOf():返回指定元素在数组中的第一个索引,如果找不到则返回 -1let fruits = ["Apple", "Banana", "Cherry"]; console.log(fruits.indexOf("Banana")); // 1 console.log(fruits.indexOf("Grape")); // -1
  • includes():检查数组是否包含某个元素,返回 truefalselet fruits = ["Apple", "Banana", "Cherry"]; console.log(fruits.includes("Banana")); // true console.log(fruits.includes("Grape")); // false
  • join():将数组的所有元素连接成一个字符串,元素之间可以指定分隔符。 let fruits = ["Apple", "Banana", "Cherry"]; let result = fruits.join(", "); console.log(result); // "Apple, Banana, Cherry"
  • sort():对数组的元素进行排序(默认按字典顺序排序)。 let numbers = [4, 2, 8, 1]; numbers.sort(); console.log(numbers); // [1, 2, 4, 8]
  • reverse():将数组中的元素反转。 let numbers = [1, 2, 3]; numbers.reverse(); console.log(numbers); // [3, 2, 1]
  • forEach():对数组的每个元素执行一个函数。 let fruits = ["Apple", "Banana", "Cherry"]; fruits.forEach(function(fruit) { console.log(fruit); }); // 输出: // Apple // Banana // Cherry
  • map():返回一个新数组,数组中的元素是通过调用提供的函数处理原数组中的每个元素得到的结果。 let numbers = [1, 2, 3]; let squares = numbers.map(function(num) { return num * num; }); console.log(squares); // [1, 4, 9]
  • filter():创建一个新数组,包含所有通过测试的元素。 let numbers = [1, 2, 3, 4, 5]; let evenNumbers = numbers.filter(function(num) { return num % 2 === 0; }); console.log(evenNumbers); // [2, 4]
  • reduce():对数组中的所有元素执行一个指定的函数,并返回一个单一的结果。 let numbers = [1, 2, 3, 4]; let sum = numbers.reduce(function(acc, num) { return acc + num; }, 0); console.log(sum); // 10
  • find():返回数组中第一个满足条件的元素。 let numbers = [1, 2, 3, 4]; let found = numbers.find(function(num) { return num > 2; }); console.log(found); // 3
  • some():检查数组中是否有至少一个元素满足条件。 let numbers = [1, 2, 3, 4]; let hasEven = numbers.some(function(num) { return num % 2 === 0; }); console.log(hasEven); // true
  • every():检查数组中的所有元素是否满足条件。 let numbers = [2, 4, 6]; let allEven = numbers.every(function(num) { return num % 2 === 0; }); console.log(allEven); // true

4. 其他数组特性

  • 数组转换为字符串let fruits = ["Apple", "Banana", "Cherry"]; let fruitsString = fruits.toString(); console.log(fruitsString); // "Apple,Banana,Cherry"
  • 数组与类数组对象: 通过 Array.from() 方法将类数组对象转换为数组。 let str = "Hello"; let strArray = Array.from(str); console.log(strArray); // ["H", "e", "l", "l", "o"]

总结

Array 是 JavaScript 中非常强大的数据结构,提供了多种方法来处理数据。你可以用它来存储和操作有序的数据集合。通过掌握这些方法,你可以更灵活地处理各种数组操作,例如排序、筛选、修改和遍历等。