在 JavaScript 中,Array
是一个内置对象,它提供了一些静态方法和属性,用于操作和处理对象。以下是一些常见的 Array
方法:
方法 |
说明 |
返回值 |
是否修改原数组 |
Array.from() |
类数组或可迭代对象转数组(支持映射函数) |
新数组 |
❌ |
Array.of() |
创建包含任意类型元素的新数组 |
新数组 |
❌ |
concat() |
合并多个数组或值 |
新数组 |
❌ |
const arr1 = Array.from('abc');
const arr2 = Array.from({
length: 3 }, (_, i) => i + 1);
const arr3 = Array.of(1, 2, 3);
const arr4 = Array(3).fill(0);
const arr5 = [1].concat([2], 3);
const arr6 = [...[1], ...[2], 3];
方法 |
说明 |
返回值 |
是否修改原数组 |
示例 |
push() |
末尾添加元素 |
新数组长度 |
✅ |
arr.push(4) → 返回长度,arr 末尾增加元素 |
pop() |
删除末尾元素 |
被删除的元素 |
✅ |
arr.pop() → 返回删除的元素 |
shift() |
删除开头元素 |
被删除的元素 |
✅ |
arr.shift() → 返回删除的元素 |
unshift() |
开头添加元素 |
新数组长度 |
✅ |
arr.unshift(0) → 返回长度,arr 开头增加元素 |
splice() |
增删元素(核心修改方法) |
被删除元素组成的数组 |
✅ |
arr.splice(1,1,‘a’) → 删除并替换元素 |
sort() |
排序(默认按字符串 Unicode 排序) |
排序后的原数组 |
✅ |
arr.sort((a,b) => a-b) → 数值升序 |
reverse() |
反转数组顺序 |
反转后的原数组 |
✅ |
arr.reverse() → 原数组反转 |
const arr = [1, 2, 3];
arr.push(4);
arr.pop();
arr.shift();
arr.unshift(0);
arr.splice(1, 1, 'a');
let arr = [1, 2, 3, 4];
arr.splice(1, 2);
arr.splice(1, 0, "a", "b");
arr.splice(1, 1, "x");
const arr = [3, 1, 2];
arr.sort((a, b) => a - b);
const arr = [1, 2, 3];
arr.reverse();
方法 |
说明 |
返回值 |
是否修改原数组 |
示例 |
slice() |
截取子数组(含头不含尾) |
新数组 |
❌ |
arr.slice(1, 2) → [2] |
indexOf() |
查找元素首次出现的索引 |
索引或 -1 |
❌ |
arr.indexOf(2) → 1 |
lastIndexOf() |
查找元素最后一次出现的索引 |
索引或 -1 |
❌ |
arr.lastIndexOf(2) → 1 |
find() |
返回首个满足条件的元素 |
元素或 undefined |
❌ |
arr.find(item => item > 1) → 2 |
findIndex() |
返回首个满足条件的元素索引 |
索引或 -1 |
❌ |
arr.findIndex(item => item > 1) → 1 |
includes() |
判断是否包含某元素 |
true/false |
❌ |
arr.includes(2) → true |
every() |
所有元素是否满足条件 |
true/false |
❌ |
arr.every(item => item > 1) → false |
some() |
至少一个元素满足条件 |
true/false |
❌ |
arr.some(item => item > 1) → true |
const arr = [1, 2, 3];
arr.slice(1, 2);
const arr = [1, 2, 3];
arr.indexOf(2);
const arr = [1, 2, 3];
arr.lastIndexOf(2);
const arr = [1, 2, 3];
arr.find(item => item > 1);
const arr = [1, 2, 3];
arr.findIndex(item => item > 1);
const users = [{
id: 1, name: "Alice"}, {
id: 2, name: "Bob"}];
users.find(u => u.id === 2);
users.findIndex(u => u.id === 2);
[1, NaN, 3].findIndex(n => Number.isNaN(n));
const arr = [1, 2, 3];
arr.includes(2);
const arr = [1, 2, 3];
arr.every(item => item > 1);
const arr = [1, 2, 3];
arr.some(item => item > 1);
方法 |
说明 |
返回值 |
是否修改原数组 |
示例 |
forEach() |
遍历数组 |
undefined |
❌ |
arr.forEach(item => console.log(item)) |
map() |
映射每个元素,生成新数组 |
新数组 |
❌ |
arr.map(item => item * 2) |
filter() |
过滤满足条件的元素 |
新数组 |
❌ |
arr.filter(item => item > 1) |
reduce() |
累计计算为单个值(左→右) |
累计结果 |
❌ |
arr.reduce((acc, cur) => acc + cur, 0) |
reduceRight() |
累计计算(右→左) |
累计结果 |
❌ |
arr.reduceRight((acc, cur) => acc + cur, 0) |
join(separator) |
数组元素拼接为字符串 |
字符串 |
❌ |
arr.join(’,’) |
toString() |
数组转字符串(逗号分隔) |
字符串 |
❌ |
arr.toString() |
const arr = [1, 2, 3];
arr.forEach(item => console.log(item));
const arr = [1, 2, 3];
const newArr = arr.map(item => item * 2);
const dates = ['2025-01-01'];
dates.map(d => new Date(d).toLocaleDateString('zh-CN'));
const arr = [1, 2, 3];
const newArr = arr.filter(item => item > 1);