在JavaScript中,数组不仅仅是一系列元素的列表,它还具有许多内置的属性和方法,这些属性和方法使处理数组变得非常方便。以下是一些主要的数组属性和方法,以及它们的使用示例:
push(item1, item2, …)
在数组末尾添加一个或多个元素。
arr.push(4, 5); // arr 现在是 [1, 2, 3, 4, 5]
pop()
移除并返回数组的最后一个元素。
let lastItem = arr.pop(); // arr 现在是 [1, 2, 3, 4]
shift()
在数组末尾添加一个或多个元素。
let firstItem = arr.shift(); // arr 现在是 [2, 3, 4]
unshift(item1, item2, …)
在数组开头添加一个或多个元素。
arr.unshift(0, 1); // arr 现在是 [0, 1, 2, 3, 4]
concat(item1, item2, …)
创建一个新的数组,包含现有数组的元素和/或新元素。
let newCombined = arr.concat([5, 6]); // newCombined 是 [0, 1, 2, 3, 4, 5, 6]
slice(start, end)
创建数组的一个浅拷贝,从 start 到 end(不包括 end)。
let sliceArr = arr.slice(1, 3); // sliceArr 是 [1, 2]
indexOf(searchElement, fromIndex)
查找元素的索引,如果不存在则返回 -1。
let index = arr.indexOf('b'); // 输出 2
toString()
把数组转换为逗号分隔的字符串。
let str = arr.toString(); // 输出 "0,a,b,3,4"
join(separator)
把数组元素合并成一个字符串,可选地用 separator 分隔。
let joined = arr.join('-'); // 输出 "0-a-b-3-4"
reverse()
反转数组元素的顺序。
arr.reverse(); // arr 现在是 [4, 3, 'b', 'a', 0]
sort(compareFn)
对数组元素进行排序。可选地提供 compareFn 作为比较函数。
arr.sort(); // 如果元素是字符串,arr 现在是 ["0", "3", "4", "a", "b"]
默认排序(升序)
let numbers = [5, 3, 8, 1, 9];
numbers.sort(); // [1, 3, 5, 8, 9]
自定义排序函数(降序)
let numbers = [5, 3, 8, 1, 9];
numbers.sort(function(a, b) {
return b - a; // 如果返回值大于0,b排在a前面,反之a排在b前面
}); // [9, 8, 5, 3, 1]
复杂排序
let objects = [{name: 'John', age: 30}, {name: 'Jane', age: 25}];
objects.sort(function(a, b) {
return a.age - b.age; // 按年龄升序排序
});
// [{name: 'Jane', age: 25}, {name: 'John', age: 30}]
forEach(callback, thisArg)
对数组中的每个元素执行 callback 函数。
arr.forEach((item, index) => console.log(index, item));
map(callback, thisArg)
创建一个新的数组,其中的元素是原数组元素经过 callback 处理的结果。
let mapped = arr.map(item => item * 2); // mapped 是 [8, 6, 2, 'aa', 'bb']
filter(callback, thisArg)
创建一个新的数组,其中的元素是原数组元素经过 callback 处理的结果。
let filtered = arr.filter(item => typeof item === 'number');
reduce(callback, initialValue)
把数组元素减少到一个单一的值,通过 callback 函数。
let sum = arr.reduce((total, current) => total + current, 0);
reduceRight(callback, initialValue)
类似于 reduce(),但从数组的末尾开始。
let reverseSum = arr.reduceRight((total, current) => total + current, 0);
find(callback, thisArg)
查找第一个满足 callback 的元素。
let found = arr.find(item => item > 2); // 找到第一个大于2的元素
findIndex(callback, thisArg)
查找第一个满足 callback 的元素的索引。
let index = arr.findIndex(item => item > 2); // 输出 2