JavaScript提供了丰富的数组API,以下是一些常用的数组方法:
push(element1, ..., elementN): 将一个或多个元素添加到数组的末尾,并返回新数组的长度。
let arr = [1, 2, 3];
arr.push(4, 5);
// 现在 arr 的值为 [1, 2, 3, 4, 5]
pop(): 移除并返回数组的最后一个元素。
let arr = [1, 2, 3, 4, 5];
let lastElement = arr.pop();
// 现在 arr 的值为 [1, 2, 3, 4],lastElement 的值为 5
shift(): 移除并返回数组的第一个元素。
let arr = [1, 2, 3, 4, 5];
let firstElement = arr.shift();
// 现在 arr 的值为 [2, 3, 4, 5],firstElement 的值为 1
unshift(element1, ..., elementN): 将一个或多个元素添加到数组的开头,并返回新数组的长度。
let arr = [2, 3, 4, 5];
arr.unshift(1);
// 现在 arr 的值为 [1, 2, 3, 4, 5]
concat(array1, array2, ..., arrayN): 连接两个或多个数组,并返回一个新数组,不修改现有数组。
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let newArr = arr1.concat(arr2);
// newArr 的值为 [1, 2, 3, 4, 5, 6]
splice(start, deleteCount, item1, ..., itemN): 从指定位置开始删除或插入元素,并返回被删除的元素组成的数组。
let arr = [1, 2, 3, 4, 5];
let removedElements = arr.splice(1, 2, 6, 7);
// 现在 arr 的值为 [1, 6, 7, 4, 5],removedElements 的值为 [2, 3]
slice(start, end): 返回一个从原数组中提取出的新数组,不修改原数组。start为起始位置,end为结束位置(不包括该位置的元素)。
let arr = [1, 2, 3, 4, 5];
let slicedArr = arr.slice(1, 4);
// slicedArr 的值为 [2, 3, 4]
forEach(callback(element, index, array)): 遍历数组的每个元素,执行提供的回调函数。
let arr = [1, 2, 3];
arr.forEach((element, index) => {
console.log(`Index ${index}: ${element}`);
});
// 输出:
// Index 0: 1
// Index 1: 2
// Index 2: 3
map(callback(element, index, array)): 创建一个新数组,其结果是对原数组每个元素调用一个提供的函数。
let arr = [1, 2, 3];
let doubledArr = arr.map(element => element * 2);
// doubledArr 的值为 [2, 4, 6]
filter(callback(element, index, array)): 创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
let arr = [1, 2, 3, 4, 5];
let evenNumbers = arr.filter(element => element % 2 === 0);
// evenNumbers 的值为 [2, 4]
indexOf(searchElement, fromIndex): 返回第一次找到给定元素在数组中的索引,如果没有找到则返回 -1。
let arr = [1, 2, 3, 4, 5];
let indexOfThree = arr.indexOf(3);
// indexOfThree 的值为 2
includes(element, fromIndex): 判断数组是否包含特定元素,返回布尔值。
let arr = [1, 2, 3, 4, 5];
let includesThree = arr.includes(3);
// includesThree 的值为 true
every(callback(element, index, array)): 判断数组中的所有元素是否满足指定条件,如果是则返回true,否则返回false。
let arr = [2, 4, 6, 8, 10];
let allEven = arr.every(element => element % 2 === 0);
// allEven 的值为 true
some(callback(element, index, array)): 判断数组中是否至少有一个元素满足指定条件,如果是则返回true,否则返回false。
let arr = [1, 2, 3, 4, 5];
let hasEvenNumber = arr.some(element => element % 2 === 0);
// hasEvenNumber 的值为 true
reduce(callback(accumulator, currentValue, index, array), initialValue): 对数组中的所有元素执行指定的回调函数,将结果累积到初始值accumulator上。
let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
// sum 的值为 15
sort(compareFunction): 对数组元素进行排序,默认按字符串Unicode码点进行排序,可以传递一个比较函数来自定义排序规则。
let arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];
arr.sort((a, b) => a - b);
// arr 的值为 [1, 1, 2, 3, 3, 4, 5, 5, 6, 9]
reverse(): 将数组元素颠倒顺序。
let arr = [1, 2, 3, 4, 5];
arr.reverse();
// arr 的值为 [5, 4, 3, 2, 1]
join(separator): 将数组元素连接成一个字符串,使用指定的分隔符。
let arr = ['apple', 'orange', 'banana'];
let result = arr.join(', ');
// result 的值为 'apple, orange, banana'
find(callback(element, index, array)): 返回数组中满足测试函数条件的第一个元素值,如果没有找到则返回undefined。
let arr = [1, 2, 3, 4, 5];
let found = arr.find(element => element > 2);
// found 的值为 3
findIndex(callback(element, index, array)): 返回数组中满足测试函数条件的第一个元素的索引,如果没有找到则返回 -1。
let arr = [1, 2, 3, 4, 5];
let foundIndex = arr.findIndex(element => element > 2);
// foundIndex 的值为 2
indexOf和lastIndexOf: 分别返回数组中指定元素的第一个匹配项的索引和最后一个匹配项的索引。
let arr = [1, 2, 3, 4, 2, 5];
let firstIndexOfTwo = arr.indexOf(2);
// firstIndexOfTwo 的值为 1
let lastIndexOfTwo = arr.lastIndexOf(2);
// lastIndexOfTwo 的值为 4
flat(depth): 将嵌套的数组展平,可以指定展平的深度。
let nestedArr = [1, [2, [3, [4]]]];
let flatArr = nestedArr.flat(2);
// flatArr 的值为 [1, 2, 3, [4]]
Array.from(arrayLike, mapFunction, thisArg): 从类数组对象或可迭代对象中创建一个新数组。可提供映射函数和映射函数的this值。
let set = new Set([1, 2, 3]);
let arr = Array.from(set, val => val * 2);
// arr 的值为 [2, 4, 6]
Array.isArray(value): 判断一个值是否为数组。
let arr = [1, 2, 3];
let isArr = Array.isArray(arr);
// isArr 的值为 true
Array.of(element1, element2, ...): 创建一个具有可变数量参数的新数组。
let arr = Array.of(1, 2, 3, 4, 5);
// arr 的值为 [1, 2, 3, 4, 5]
Array.fill(value, start, end): 用指定的值填充数组的元素,可以指定起始和结束位置。
let arr = [1, 2, 3, 4, 5];
arr.fill(0, 2, 4);
// arr 的值为 [1, 2, 0, 0, 5]
Array.reverse(): 将数组元素颠倒顺序。
let arr = [1, 2, 3, 4, 5];
arr.reverse();
// arr 的值为 [5, 4, 3, 2, 1]
Array.isArray(value): 判断一个值是否为数组。
let arr = [1, 2, 3];
let isArr = Array.isArray(arr);
// isArr 的值为 true
Array.from(arrayLike, mapFunction, thisArg): 从类数组对象或可迭代对象中创建一个新数组。可提供映射函数和映射函数的this值。
let set = new Set([1, 2, 3]);
let arr = Array.from(set, val => val * 2);
// arr 的值为 [2, 4, 6]
Array.sort(compareFunction): 对数组元素进行排序,默认按字符串Unicode码点进行排序,可以传递一个比较函数来自定义排序规则。
let arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];
arr.sort((a, b) => a - b);
// arr 的值为 [1, 1, 2, 3, 3, 4, 5, 5, 6, 9]
Array.filter(callback(element, index, array)): 创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
let arr = [1, 2, 3, 4, 5];
let evenNumbers = arr.filter(element => element % 2 === 0);
// evenNumbers 的值为 [2, 4]
Array.reduce(callback(accumulator, currentValue, index, array), initialValue): 对数组中的所有元素执行指定的回调函数,将结果累积到初始值accumulator上。
let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
// sum 的值为 15
Array.some(callback(element, index, array)): 判断数组中是否至少有一个元素满足指定条件,如果是则返回true,否则返回false。
let arr = [1, 2, 3, 4, 5];
let hasEvenNumber = arr.some(element => element % 2 === 0);
// hasEvenNumber 的值为 true
Array.every(callback(element, index, array)): 判断数组中的所有元素是否满足指定条件,如果是则返回true,否则返回false。
let arr = [2, 4, 6, 8, 10];
let allEven = arr.every(element => element % 2 === 0);
// allEven 的值为 true
Array.includes(element, fromIndex): 判断数组是否包含特定元素,返回布尔值。
let arr = [1, 2, 3, 4, 5];
let includesThree = arr.includes(3);
// includesThree 的值为 true
Array.findIndex(callback(element, index, array)): 返回数组中满足测试函数条件的第一个元素的索引,如果没有找到则返回 -1。
let arr = [1, 2, 3, 4, 5];
let foundIndex = arr.findIndex(element => element > 2);
// foundIndex 的值为 2
Array.keys()、Array.values()和Array.entries(): 这些方法返回一个迭代器对象,分别包含数组的键、值和键值对。
let arr = ['a', 'b', 'c'];
let keysIterator = arr.keys();
let valuesIterator = arr.values();
let entriesIterator = arr.entries();
console.log([...keysIterator]); // [0, 1, 2]
console.log([...valuesIterator]); // ['a', 'b', 'c']
console.log([...entriesIterator]); // [[0, 'a'], [1, 'b'], [2, 'c']]
Array.from(arrayLike, mapFunction, thisArg): 从类数组对象或可迭代对象中创建一个新数组。可提供映射函数和映射函数的this值。
let set = new Set([1, 2, 3]);
let arr = Array.from(set, val => val * 2);
// arr 的值为 [2, 4, 6]
Array.of(element1, element2, ...): 创建一个具有可变数量参数的新数组。
let arr = Array.of(1, 2, 3, 4, 5);
// arr 的值为 [1, 2, 3, 4, 5]
Array.isArray(value): 判断一个值是否为数组。
let arr = [1, 2, 3];
let isArr = Array.isArray(arr);
// isArr 的值为 true
Array.fill(value, start, end): 用指定的值填充数组的元素,可以指定起始和结束位置。
let arr = [1, 2, 3, 4, 5];
arr.fill(0, 2, 4);
// arr 的值为 [1, 2, 0, 0, 5]
Array.reverse(): 将数组元素颠倒顺序。
let arr = [1, 2, 3, 4, 5];
arr.reverse();
// arr 的值为 [5, 4, 3, 2, 1]
这些方法继续展示了JavaScript数组提供的强大功能,包括从可迭代对象创建数组、判断是否为数组等。在处理数组时,根据需求选择适当的方法可以提高代码的效率和可读性。