tip:
本文仅作为查找和基本使用的展示,需要深入了解这些方法的使用请参考:Array - JavaScript | MDN (mozilla.org)
可以通过目录快速锁定需要查找的方法和查看它的使用
目录
新建一个数组
// 新建一个数组
let arr1 = new Array(10);// 数组构造函数
let arr2 = [10, 20, 30]
let arr3 = Array.of(10);
console.log(arr1, arr2, arr3);
console.log("\n----------分割线----------\n");
数组静态(类)方法
Array.from()
,将类数组对象或可迭代对象转换为数组实例
let newArray = Array.from({ 0: 'a', 1: 'b', 2: 'c' });
console.log(newArray);
console.log("\n----------分割线----------\n");
Array.isArray()
,用来判断一个值是否为数组
let isArray1 = Array.isArray(arr2);
console.log(isArray1);
console.log("\n----------分割线----------\n");
Array.of()
,将参数转换成数组实例
let newArray2 = Array.of(10, 20, 30);
console.log(newArray2);
console.log("\n----------分割线----------\n");
数组实例属性
互相绑定的length
arr2.length = 5;
console.log(arr2);
arr2.length = 2;
console.log(arr2);
console.log("\n----------分割线----------\n");
数组实例方法
at()
方法返回数组中指定索引处的元素,如果索引超出范围,则返回 undefined。参数为负数时从数组末尾开始计算。
let index1 = arr2.at(1);
console.log(index1);
console.log("\n----------分割线----------\n");
concat()
,连接两个或多个数组并将其返回
let newArr1 = arr2.concat([1, 2, 3]);
console.log(newArr1);
console.log("\n----------分割线----------\n");
copyWithin()
,从数组中复制元素到同一数组中的不同位置,并返回它,不会改变原数组的长度
let newArr4 = arr2.copyWithin(0, 2);
console.log(newArr4);
console.log("\n----------分割线----------\n");
entries()
,返回一个新的可迭代的对象,该对象包含数组中每个索引的键值对。
let newArr5 = arr2.entries();
console.log(newArr5.next().value);
console.log("\n----------分割线----------\n");
every()
方法测试数组中的元素有 1 个元素没通过了被提供的函数测试时返回false
let every1 = arr2.every(item => item > 2);
console.log(every1);
console.log("\n----------分割线----------\n");
fill()
,用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。参数,填充的值,起始索引默认为0,终止索引默认为arr.length。
let fill1 = arr2.fill(0, 0, 2);
console.log(fill1);
console.log("\n----------分割线----------\n");
filter()
方法返回一个新数组,其中包含 callback 返回 true 的元素。
let newArr3 = arr2.filter(item => item > 2);
console.log(newArr3);
console.log("\n----------分割线----------\n");
find()
方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
let find1 = arr2.find(item => item > 2);
console.log(find1);
console.log("\n----------分割线----------\n");
findIndex()
方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。和indexof类似
let index4 = arr2.findIndex(item => item > 2);
console.log(index4);
console.log("\n----------分割线----------\n");
findLast()
方法返回数组中满足提供的测试函数的最后一个元素的值。否则返回 undefined。和find类似
let find2 = arr2.findLast(item => item > 2);
console.log(find2);
console.log("\n----------分割线----------\n");
findLastIndex()
方法返回 callback 返回 true 的最后一个元素的索引。和lastIndexOf类似
let index5 = arr2.findLastIndex(item => item > 2);
console.log(index5);
console.log("\n----------分割线----------\n");
flat()
方法返回一个新数组,所有子数组元素递归地连接到其中,直到指定的深度。参数为拆分的深度,默认拆分一层(1),
let arr4 = [1, 2, [3, 4, [5, 6]]].flat(2);
console.log(arr4);
console.log("\n----------分割线----------\n");
flatMap()
方法先执行 map(),再执行深度为 1 的 flat()。
let arr5 = [1, 2, [3, 4, [5, 6]]].flatMap(item => item);
console.log(arr5);
console.log("\n----------分割线----------\n");
forEach()
,循环遍历数组
arr2.forEach((item, index, arr) => {
console.log(arr[index], "=", item);
})
console.log("\n----------分割线----------\n");
includes()
,返回一个布尔值,表示某个数组是否包含给定的值,与indexOf类似
let includes1 = arr2.includes(3);
console.log(includes1);
console.log("\n----------分割线----------\n");
indexOf()
方法在数组中搜索 指定元素 并返回第一个匹配的索引。若没有返回-1
let index2 = arr2.indexOf(4);
console.log(index2, arr2);
console.log("\n----------分割线----------\n");
join()
方法将数组中的所有元素连接成一个字符串,参数为连接符。
let str1 = arr2.join("-");
console.log(str1);
console.log("\n----------分割线----------\n");
keys()
方法返回一个包含数组中每个索引键的Array Iterator对象。
let keys1 = arr2.keys();
console.log(keys1);
console.log("\n----------分割线----------\n");
lastIndexOf()
方法在数组中搜索 指定元素 并返回最后一个匹配的索引。若没有返回-1,没有重复元素时,效果和indexOf一致
let index3 = arr2.lastIndexOf(4);
console.log(index3, arr2);
console.log("\n----------分割线----------\n");
map()
,循环遍历数组,并返回一个新数组
arr2.map((item, index, arr) => {
console.log(arr[index], "=", item);
})
console.log("\n----------分割线----------\n");
pop()
,从数组末尾移除一个元素,并返回移除的元素
let del1 = arr2.pop();
console.log(del1, arr2);
console.log("\n----------分割线----------\n");
push()
,向数组末尾添加一个或多个元素,并返回新的长度
let len1 = arr2.push(4, 5, 6);
console.log(len1, arr2);
console.log("\n----------分割线----------\n");
reduce()
方法会遍历整个数组并触发回调函数,回调中有两个参数,第一个是前一个回调的返回值(或者第一个值),第二个是当前遍历的元素值。reduce不会改变原数组,但回调函数会
console.log([1, 2, 4].reduce((a, b) => a + b)); // 7
console.log("\n----------分割线----------\n");
reduceRight()
方法与 reduce() 方法类似,区别在于 reduceRight() 从数组末尾向前遍历。
console.log([1, 2, 4].reduceRight((a, b) => a - b)); // 1
console.log("\n----------分割线----------\n");
reverse()
方法原地颠倒数组元素的顺序:第一个数组元素变为最后一个数组元素,最后一个数组元素变为第一个数组元素。它返回对数组的引用。
arr2.reverse();
console.log(arr2);
console.log("\n----------分割线----------\n");
shift()
方法从数组移出第一个元素,并返回该元素。
let del2 = arr2.shift();
console.log(del2, arr2);
console.log("\n----------分割线----------\n");
slice()
方法从数组提取一个片段,并作为一个新数组返回。
let newArr2 = arr2.slice(1, 3);
console.log(newArr2);
console.log("\n----------分割线----------\n");
some()
方法测试数组中的元素至少有 1 个元素通过了被提供的函数测试时返回true
let some1 = arr2.some(item => item > 2);
console.log(some1);
console.log("\n----------分割线----------\n");
sort()
方法对数组的元素进行适当的排序,并返回对数组的引用。当数组内是字符时,会按照首个字符的编码顺序排序
arr2.sort();
console.log(arr2);
console.log("\n----------分割线----------\n");
splice()
方法从数组移除一些元素,并(可选地)替换它们。它返回从数组中删除的元素,这里是,从下标1的位置开始,移除两个元素,(如果有第三个参数,那么会在下标1的位置添加这个参数作为数组的元素) 后续的元素向前移动
arr2.splice(1, 2);
console.log(arr2);
console.log("\n----------分割线----------\n");
toReversed()
和reverse一样反转一个数组的顺序,但toReversed不改变原数组,而是返回一个新数组。
let newArr7 = arr2.toReversed();
console.log(newArr7);
console.log("\n----------分割线----------\n");
toSorted()
和splice一样对数组的元素进行适当的排序,但toSort不改变原数组,而是返回一个新数组。
let newArr9 = arr2.toSorted();
console.log(newArr9);
console.log("\n----------分割线----------\n");
toSpliced()
和splice一样,从数组中移除一些元素,并(可选地)替换它们。toSplice不改变原数组,而是返回一个新数组。
let newArr8 = arr2.toSpliced(1, 2);
console.log(newArr8);
console.log("\n----------分割线----------\n");
toString()
方法将数组转换为字符串,并返回结果。
let str2 = arr2.toString();
console.log(str2);
console.log("\n----------分割线----------\n");
unshift()
方法在数组的开头添加一个或更多元素,并返回新的长度。
let len2 = arr2.unshift(0, 1, 2);
console.log(len2, arr2);
console.log("\n----------分割线----------\n");
values()
方法返回 Array 对象中所有的值。
let values = arr2.values();
console.log(values);
console.log("\n----------分割线----------\n");
with()
方法参数1修改的位置,参数2,修改的值,返回修改后的数组
let newArr6 = [1, 2, 3, 4, 5].with(1,1);
console.log(newArr6);
console.log("\n----------分割线----------\n");
方法合集
以上展示的所有数组方法的合集,注意在使用时要区分对原数组是否有影响
// 新建一个数组
let arr1 = new Array(10);// 数组构造函数
let arr2 = [10, 20, 30]
let arr3 = Array.of(10);
console.log(arr1, arr2, arr3);
console.log("\n----------分割线----------\n");
// 数组静态(类)方法
// from(),将类数组对象或可迭代对象转换为数组实例
let newArray = Array.from({ 0: 'a', 1: 'b', 2: 'c' });
console.log(newArray);
console.log("\n----------分割线----------\n");
// isArray(),用来判断一个值是否为数组
let isArray1 = Array.isArray(arr2);
console.log(isArray1);
console.log("\n----------分割线----------\n");
// of(),将参数转换成数组实例
let newArray2 = Array.of(10, 20, 30);
console.log(newArray2);
console.log("\n----------分割线----------\n");
// 数组实例属性
// 互相绑定的length
arr2.length = 5;
console.log(arr2);
arr2.length = 2;
console.log(arr2);
console.log("\n----------分割线----------\n");
// 数组实例方法
// at() 方法返回数组中指定索引处的元素,如果索引超出范围,则返回 undefined。参数为负数时从数组末尾开始计算。
let index1 = arr2.at(1);
console.log(index1);
console.log("\n----------分割线----------\n");
// concat(),连接两个或多个数组并将其返回
let newArr1 = arr2.concat([1, 2, 3]);
console.log(newArr1);
console.log("\n----------分割线----------\n");
// copyWithin(),从数组中复制元素到同一数组中的不同位置,并返回它,不会改变原数组的长度。
let newArr4 = arr2.copyWithin(0, 2);
console.log(newArr4);
console.log("\n----------分割线----------\n");
// entries(),返回一个新的可迭代的对象,该对象包含数组中每个索引的键值对。
let newArr5 = arr2.entries();
console.log(newArr5.next().value);
console.log("\n----------分割线----------\n");
// every() 方法测试数组中的元素有 1 个元素没通过了被提供的函数测试时返回false
let every1 = arr2.every(item => item > 2);
console.log(every1);
console.log("\n----------分割线----------\n");
// fill(),用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。参数,填充的值,起始索引默认为0,终止索引默认为arr.length。
let fill1 = arr2.fill(0, 0, 2);
console.log(fill1);
console.log("\n----------分割线----------\n");
// filter() 方法返回一个新数组,其中包含 callback 返回 true 的元素。
let newArr3 = arr2.filter(item => item > 2);
console.log(newArr3);
console.log("\n----------分割线----------\n");
// find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
let find1 = arr2.find(item => item > 2);
console.log(find1);
console.log("\n----------分割线----------\n");
// findIndex() 方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。和indexof类似
let index4 = arr2.findIndex(item => item > 2);
console.log(index4);
console.log("\n----------分割线----------\n");
// findLast() 方法返回数组中满足提供的测试函数的最后一个元素的值。否则返回 undefined。和find类似
let find2 = arr2.findLast(item => item > 2);
console.log(find2);
console.log("\n----------分割线----------\n");
// findLastIndex() 方法返回 callback 返回 true 的最后一个元素的索引。和lastIndexOf类似
let index5 = arr2.findLastIndex(item => item > 2);
console.log(index5);
console.log("\n----------分割线----------\n");
// flat() 方法返回一个新数组,所有子数组元素递归地连接到其中,直到指定的深度。参数为拆分的深度,默认拆分一层(1),
let arr4 = [1, 2, [3, 4, [5, 6]]].flat(2);
console.log(arr4);
console.log("\n----------分割线----------\n");
// flatMap() 方法先执行 map(),再执行深度为 1 的 flat()。
let arr5 = [1, 2, [3, 4, [5, 6]]].flatMap(item => item);
console.log(arr5);
console.log("\n----------分割线----------\n");
// forEach(),循环遍历数组
arr2.forEach((item, index, arr) => {
console.log(arr[index], "=", item);
})
console.log("\n----------分割线----------\n");
// includes(),返回一个布尔值,表示某个数组是否包含给定的值,与indexOf类似
let includes1 = arr2.includes(3);
console.log(includes1);
console.log("\n----------分割线----------\n");
// indexOf() 方法在数组中搜索 指定元素 并返回第一个匹配的索引。若没有返回-1
let index2 = arr2.indexOf(4);
console.log(index2, arr2);
console.log("\n----------分割线----------\n");
// join() 方法将数组中的所有元素连接成一个字符串,参数为连接符。
let str1 = arr2.join("-");
console.log(str1);
console.log("\n----------分割线----------\n");
// keys() 方法返回一个包含数组中每个索引键的Array Iterator对象。
let keys1 = arr2.keys();
console.log(keys1);
console.log("\n----------分割线----------\n");
// lastIndexOf() 方法在数组中搜索 指定元素 并返回最后一个匹配的索引。若没有返回-1,没有重复元素时,效果和indexOf一致
let index3 = arr2.lastIndexOf(4);
console.log(index3, arr2);
console.log("\n----------分割线----------\n");
// map(),循环遍历数组,并返回一个新数组
arr2.map((item, index, arr) => {
console.log(arr[index], "=", item);
})
console.log("\n----------分割线----------\n");
// pop(),从数组末尾移除一个元素,并返回移除的元素
let del1 = arr2.pop();
console.log(del1, arr2);
console.log("\n----------分割线----------\n");
// push(),向数组末尾添加一个或多个元素,并返回新的长度
let len1 = arr2.push(4, 5, 6);
console.log(len1, arr2);
console.log("\n----------分割线----------\n");
// reduce() 方法会遍历整个数组并触发回调函数,回调中有两个参数,第一个是前一个回调的返回值(或者第一个值),第二个是当前遍历的元素值。reduce不会改变原数组,但回调函数会
console.log([1, 2, 4].reduce((a, b) => a + b)); // 7
console.log("\n----------分割线----------\n");
// reduceRight() 方法与 reduce() 方法类似,区别在于 reduceRight() 从数组末尾向前遍历。
console.log([1, 2, 4].reduceRight((a, b) => a - b)); // 1
console.log("\n----------分割线----------\n");
// reverse() 方法原地颠倒数组元素的顺序:第一个数组元素变为最后一个数组元素,最后一个数组元素变为第一个数组元素。它返回对数组的引用。
arr2.reverse();
console.log(arr2);
console.log("\n----------分割线----------\n");
// shift() 方法从数组移出第一个元素,并返回该元素。
let del2 = arr2.shift();
console.log(del2, arr2);
console.log("\n----------分割线----------\n");
// slice() 方法从数组提取一个片段,并作为一个新数组返回。
let newArr2 = arr2.slice(1, 3);
console.log(newArr2);
console.log("\n----------分割线----------\n");
// some() 方法测试数组中的元素至少有 1 个元素通过了被提供的函数测试时返回true
let some1 = arr2.some(item => item > 2);
console.log(some1);
console.log("\n----------分割线----------\n");
// sort() 方法对数组的元素进行适当的排序,并返回对数组的引用。当数组内是字符时,会按照首个字符的编码顺序排序
arr2.sort();
console.log(arr2);
console.log("\n----------分割线----------\n");
// splice() 方法从数组移除一些元素,并(可选地)替换它们。它返回从数组中删除的元素
arr2.splice(1, 2);
console.log(arr2);
console.log("\n----------分割线----------\n");
// toReversed() 和reverse一样反转一个数组的顺序,但toReversed不改变原数组,而是返回一个新数组。
let newArr7 = arr2.toReversed();
console.log(newArr7);
console.log("\n----------分割线----------\n");
// toSorted() 和splice一样对数组的元素进行适当的排序,但toSort不改变原数组,而是返回一个新数组。
let newArr9 = arr2.toSorted();
console.log(newArr9);
console.log("\n----------分割线----------\n");
// toSpliced() 和splice一样,从数组中移除一些元素,并(可选地)替换它们。toSplice不改变原数组,而是返回一个新数组。
let newArr8 = arr2.toSpliced(1, 2);
console.log(newArr8);
console.log("\n----------分割线----------\n");
// toString() 方法将数组转换为字符串,并返回结果。
let str2 = arr2.toString();
console.log(str2);
console.log("\n----------分割线----------\n");
// unshift() 方法在数组的开头添加一个或更多元素,并返回新的长度。
let len2 = arr2.unshift(0, 1, 2);
console.log(len2, arr2);
console.log("\n----------分割线----------\n");
// values() 方法返回 Array 对象中所有的值。
let values = arr2.values();
console.log(values);
console.log("\n----------分割线----------\n");
// with() 方法参数1修改的位置,参数2,修改的值,返回修改后的数组
let newArr6 = [1, 2, 3, 4, 5].with(1,1);
console.log(newArr6);
console.log("\n----------分割线----------\n");
注意在使用时要区分对原数组是否有影响