创建数组的方法
- Array.of(): 创建包含所有传入参数的数组。
- Array.from(): 从类数组或可迭代对象创建数组。
let arr1 = Array.of(1, 2, 3);
let arr2 = Array.from('hello');
添加/删除元素
- push(): 在数组末尾添加一个或多个元素,返回新数组的长度。
- pop(): 删除数组末尾的一个元素,返回该元素。
- unshift(): 在数组开头添加一个或多个元素,返回新数组的长度。
- shift(): 删除数组开头的一个元素,返回该元素。
- splice(): 从数组中添加/删除元素,返回被删除的元素。如果未规定第二个参数,则删除从 index 开始到原数组结尾的所有元素。改变原数组
let arr = [1, 2, 3];
arr.push(4);
arr.pop();
arr.unshift(0);
arr.shift();
arr.splice(1, 1, 'a');
arr.splice(1, 0, 'a');
查找元素
- indexOf(): 返回元素在数组中的第一个索引,没有则返回 -1。(完全匹配)
- lastIndexOf(): 返回元素在数组中的最后一个索引,没有则返回 -1。
- includes(): 检查数组是否包含某个元素,返回布尔值。(可以部分匹配)
- find(): 返回满足提供的测试函数的第一个元素的值。
- findIndex(): 返回满足提供的测试函数的第一个元素的索引。
let arr = [1, 2, 3, 2];
arr.indexOf(2);
arr.lastIndexOf(2);
arr.includes(3);
arr.find(x => x > 1);
arr.findIndex(x => x > 1);
迭代方法
- for 循环或 for…of 循环
- forEach(): 对数组的每个元素执行一次提供的函数。return 语句会退出当前的回调函数,但 forEach 循环会继续处理数组中的下一个元素,forEach函数没有返回值,和上面两个循环一样
- map(): 创建一个新数组,其结果是该数组中的每个元素调用一次提供的函数后的返回值。新数组的长度与原数组的长度一致
- filter(): 创建一个新数组,其中包含所有通过提供的函数实现的测试的元素。
- reduce(): 对数组中的每个元素执行一个 reducer 函数,最终得到一个值。
- reduceRight(): 从右到左对数组中的每个元素执行一个 reducer 函数,最终得到一个值。
- every(): 测试数组的所有元素是否都通过了指定函数的测试,返回布尔值。return停止循环
- some(): 测试数组中的某些元素是否至少有一个通过了指定函数的测试,返回布尔值。return停止循环
let arr = [1, 2, 3, 4];
arr.forEach(x => console.log(x));
let doubled = arr.map(x => x * 2);
let evens = arr.filter(x => x % 2 === 0);
let sum = arr.reduce((acc, x) => acc + x, 0);
let sumRight = arr.reduceRight((acc, x) => acc + x, 0);
arr.every(x => x > 0);
arr.some(x => x > 3);
排序和翻转
- sort(): 对数组的元素进行排序并返回该数组。
- reverse(): 颠倒数组中元素的顺序并返回该数组。
let arr = [3, 1, 4, 2];
arr.sort();
arr.reverse();
连接、切割、复制
- concat(): 合并两个或多个数组,不改变现有数组,返回一个新数组。
- slice(): 返回一个从开始到结束(不包括结束)选择的数组的一部分。
- join(): 将数组的所有元素连接成一个字符串。
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = arr1.concat(arr2);
let arr4 = arr3.slice(1, 3);
let str = arr4.join('-');
其他方法
- fill(): 用一个固定值填充数组中的从起始索引到终止索引(不包括终止索引)的全部元素。可以使用负数索引来表示从数组末尾开始的相对位置。改变原数组,并返回修改后的原数组
- copyWithin(): 从数组的指定位置拷贝元素到数组的另一个指定位置中。它会改变原数组,并返回修改后的数组
target:复制开始的位置的索引。start(可选):复制元素的起始位置的索引(包含该位置)。默认是 0。end(可选):复制元素的结束位置的索引(不包含该位置)。默认是数组的长度。
let arr = [1, 2, 3, 4];
arr.fill(0, 2, 4);
arr.fill(0, -3, -1);
arr.copyWithin(2, 0, 2);