JavaScript 中数组有很多常用的方法,可以对数组进行各种操作,以下是常用的数组方法:
push:在数组末尾添加一个或多个元素,返回新数组的长度
const arr = [1, 2, 3];
const length = arr.push(4, 5); // arr => [1, 2, 3, 4, 5], length => 5
pop:从数组末尾删除一个元素,返回删除的元素
const arr = [1, 2, 3];
const lastItem = arr.pop(); // arr => [1, 2], lastItem => 3
shift:从数组头部删除一个元素,返回删除的元素
const arr = [1, 2, 3];
const firstItem = arr.shift(); // arr => [2, 3], firstItem => 1
unshift:在数组头部添加一个或多个元素,返回新数组的长度
const arr = [1, 2, 3];
const length = arr.unshift(-1, 0); // arr => [-1, 0, 1, 2, 3], length => 5
splice:对数组进行截取或替换操作
const arr = [1, 2, 3];
const result1 = arr.splice(1, 1); // arr => [1, 3], result1 => [2]
const result2 = arr.splice(1, 0, 4, 5); // arr => [1, 4, 5, 3], result2 => []
slice:对数组进行拷贝,返回一个新的数组
const arr = [1, 2, 3];
const newArray = arr.slice(1); // arr => [1, 2, 3], newArray => [2, 3]
concat:将多个数组合并成一个新数组
const arr1 = [1, 2, 3];
const arr2 = [4, 5];
const newArray = arr1.concat(arr2); // newArray => [1, 2, 3, 4, 5]
indexOf:查找指定元素在数组中的位置,返回其下标,如果未找到,返回 -1
const arr = [1, 2, 3];
const index = arr.indexOf(2); // index => 1
lastIndexOf:查找指定元素在数组中的最后位置,返回其下标,如果未找到,返回 -1
const arr = [1, 2, 3, 1, 2];
const lastIndex = arr.lastIndexOf(2); // lastIndex => 4
forEach:遍历数组中的每个元素,对其进行操作
const arr = [1, 2, 3];
arr.forEach(function(item, index, array) {
console.log(item, index, array);
});
// output:
// 1 0 [1, 2, 3]
// 2 1 [1, 2, 3]
// 3 2 [1, 2, 3]
需要注意的是,大多数组方法都是会对原数组进行修改的,如果需要不影响到原数组,可以使用一些不改变原数组的方法,例如 slice() 和 concat() 等。
join:将数组转换成字符串,用指定的分隔符分隔每个元素
const arr = [1, 2, 3];
const str = arr.join('-'); // str => '1-2-3'
map:对数组中的每个元素进行处理,返回一个新的数组
const arr = [1, 2, 3];
const newArray = arr.map(function(item) {
return item * 2;
}); // newArray => [2, 4, 6]
filter:过滤数组中的元素,返回一个新的数组
const arr = [1, 2, 3];
const newArray = arr.filter(function(item) {
return item > 1;
}); // newArray => [2, 3]
reduce:对数组中的元素进行累加操作,返回累加的结果
const arr = [1, 2, 3];
const sum = arr.reduce(function(total, item) {
return total + item;
}, 0); // sum => 6
reverse:反转数组中的元素顺序
const arr = [1, 2, 3];
arr.reverse(); // arr => [3, 2, 1]
sort:对数组中的元素进行排序,默认按照 Unicode 编码进行排序
const arr = [3, 2, 1];
arr.sort(); // arr => [1, 2, 3]
some:判断数组中是否有至少一个元素满足给定条件,如果有,返回 true,否则返回 false
const arr = [1, 2, 3];
const hasEven = arr.some(function(item) {
return item % 2 === 0;
}); // hasEven => true
every:判断数组中是否所有元素都满足给定条件,如果是,返回 true,否则返回 false
const arr = [1, 2, 3];
const allEven = arr.every(function(item) {
return item % 2 === 0;
}); // allEven => false
find:查找数组中满足给定条件的第一个元素,并返回该元素,如果未找到,返回 undefined
const arr = [1, 2, 3];
const item = arr.find(function(element) {
return element % 2 === 0;
}); // item => 2
findIndex:查找数组中满足给定条件的第一个元素的索引,并返回该索引,如果未找到,返回 -1
const arr = [1, 2, 3];
const index = arr.findIndex(function(element) {
return element % 2 === 0;
}); // index => 1
includes:判断数组中是否包含指定元素,如果是,返回 true,否则返回 false
const arr = [1, 2, 3];
const hasTwo = arr.includes(2); // hasTwo => true
flat:将嵌套数组展开成一维数组
const arr = [1, [2, 3], [4, [5]]];
const newArr = arr.flat(); // newArr => [1, 2, 3, 4, [5]]
flatMap:对数组中的每个元素进行处理,然后将所有处理结果组成一个新的数组
const arr = [1, 2, 3];
const newArr = arr.flatMap(function(item) {
return [item * 2];
}); // newArr => [2, 4, 6]
keys:返回数组中所有键的迭代器
const arr = [1, 2, 3];
const iterator = arr.keys(); // iterator => Array Iterator {}
values:返回数组中所有值的迭代器
const arr = [1, 2, 3];
const iterator = arr.values(); // iterator => Array Iterator {}
entries:返回数组中所有键值对的迭代器
const arr = [1, 2, 3];
const iterator = arr.entries(); // iterator => Array Iterator {}
|