一.静态方法
1.Array.from()
Array.from()
静态方法从可迭代或类数组对象创建一个新的浅拷贝的数组实例。
Array.from(arrayLike, mapFn, thisArg)
2.Array.isArray()
Array.isArray()
静态方法用于确定传递的值是否是一个数组。
3.Array.of()
Array.of()
静态方法通过可变数量的参数创建一个新的 Array
实例,而不考虑参数的数量或类型。
-
参数直接作为数组元素,不受参数数量和类型影响。
-
解决
new Array()
在单参数时的歧义问题。
Array.of(element0, element1, /* … ,*/ elementN)
方法 | 参数行为 | 单数字参数处理 | 适用场景 |
---|---|---|---|
Array.of() | 参数直接作为数组元素 | 创建包含该数字的数组 | 明确创建包含任意元素的数组 |
Array.from() | 将类数组或可迭代对象转为数组 | 不适用 | 转换类数组对象或映射生成数组 |
new Array() | 单数字参数表示长度,多参数为元素 | 创建指定长度的空数组 | 需要指定数组长度的场景 |
二.实例方法
1.操作方法
增
①push->改变原数组
push()
方法将指定的元素添加到数组的末尾,并返回新的数组长度。
②unshift->改变原数组
unshift()
方法将指定元素添加到数组的开头,并返回数组的新长度。
③concat->不改变原数组
concat(value0, value1, /* … ,*/ valueN)
concat()
方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
如果拼接的是数组 则将数组展开,之后将数组中的每一个元素放到新数组中.
如果是其他类型, 直接放到新数组中
④fill->改变原数组
fill(value, start, end)
fill()
方法用一个固定值填充一个数组中从起始索引(默认为 0
)到终止索引(默认为 array.length
)内的全部元素。它返回修改后的数组。
删
①pop->改变原数组
pop()
方法从数组中删除最后一个元素,并返回该元素的值。此方法会更改数组的长度。
②shift->改变原数组
shift()
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
③slice(切片)->不改变原数组
slice()
方法返回一个新的数组对象,这一对象是一个由 start
和 end
决定的原数组的浅拷贝(包括 start
,不包括 end
)
增&&删(改)
①splice(拼接)->改变原数组
splice()
方法就地移除或者替换已存在的元素和/或添加新的元素。返回删除的元素.
splice(start, deleteCount, item1, item2, /* …, */ itemN)
//item为插入的元素
一般涉及第三个参数的操作就不再包括start自身
要创建一个删除和/或替换部分内容而不改变原数组的新数组,请使用 toSpliced()。
②toSpliced()->不改变原数组
③with->不改变原数组
Array 实例的 with()
方法是使用方括号表示法修改指定索引值的复制方法版本。它会返回一个新数组,其指定索引处的值会被新值替换。
查(都不改变原数组)
①includes
includes()
方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true
,否则返回 false
。这里注意一下,无论使用==还是===includes都是强制需要===(即类型和数据都要相等)
some返回的则是true
②find
find()
方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
③findIndex
findIndex()
方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回 -1。
④findLast
findLast()
方法反向迭代数组,并返回满足提供的测试函数的第一个元素的值。如果没有找到对应元素,则返回 undefined。
⑤findLastIndex
findLastIndex()
方法反向迭代数组,并返回满足所提供的测试函数的第一个元素的索引。若没有找到对应元素,则返回 -1。
⑥at(es6 -2015新增)
at()
方法接收一个整数值并返回该索引对应的元素,允许正数和负数。负整数从数组中的最后一个元素开始倒数.
⑦indexOf(es6 -2016新增)
indexOf()
方法返回数组中第一次出现给定元素的下标,如果不存在则返回 -1。
lastIndexOf()
方法返回数组中给定元素最后一次出现的索引,如果不存在则返回 -1。该方法从 fromIndex
开始向前搜索数组。
2.排序方法
①reverse->改变原数组
reverse()
方法就地反转数组中的元素,并返回同一数组的引用。
②sort->改变原数组
sort()
方法就地对数组的元素进行排序,并返回对相同数组的引用。默认排序顺序是根据字符串Unicode码点。
③toReversed->不改变原数组
Array 实例的 toReversed()
方法是 reverse() 方法对应的复制版本。它返回一个元素顺序相反的新数组。
④toSorted->不改变原数组
Array 实例的 toSorted()
方法是 sort() 方法的复制方法版本。它返回一个新数组,其元素按升序排列。
3.转换方法(都不改变原数组)
①join
join()
方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串,用逗号或指定的分隔符字符串分隔。如果数组只有一个元素,那么将返回该元素而不使用分隔符。
②flat
flat()
方法创建一个新的数组,并根据指定深度递归地将所有子数组元素拼接到新的数组中。
flat()就比较简易地实现了上一个实例方法举例的操作
③flatMap
flatMap()
方法对数组中的每个元素应用给定的回调函数,然后将结果展开一级,返回一个新数组。它等价于在调用 map() 方法后再调用深度为 1 的 flat() 方法(arr.map(...args).flat()
),但比分别调用这两个方法稍微更高效一些。
4.迭代方法(都不改变原数组)
①forEach
forEach()
方法对数组的每个元素执行一次给定的函数。
forEach(callbackFn, thisArg)
三个参数: item:每次循环的当前元素, index:当前项的索引, array:调用数组本身;
②map
map()
方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
三个参数: item:每次循环的当前元素, index:当前项的索引, array:调用数组本身;
③filter
filter()
方法创建给定数组一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。
④every
every()
方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。全都满足返回true 只要有一个不满足 返回false
⑤some
some()
方法测试数组中是否至少有一个元素通过了由提供的函数实现的测试。如果在数组中找到一个元素使得提供的函数返回 true,则返回 true;否则返回 false。它不会修改数组。
④reduce
reduce()
方法对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
array.reduce((prev, cur, index, arr)=> {
/***/
}, initialValue)
reduce 为数组中的每一个元素依次执行回调函数,接受四个参数:初始值 initialValue(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。
如果提供initialValue,从索引0开始。
⑤keys
Iterator
对象是一个符合迭代器协议的对象,其提供了 next()
方法用以返回迭代器结果对象。所有内置迭代器都继承自 Iterator
类。Iterator
类提供了 [Symbol.iterator]() 方法,该方法返回迭代器对象本身,使迭代器也可迭代。它还提供了一些使用迭代器的辅助方法。
keys()
方法返回一个新的数组迭代器对象,其中包含数组中每个索引的键。
⑥entries
entries()
方法返回一个新的数组迭代器对象,该对象包含数组中每个索引的键/值对。