1 fill() 填充数组
常用于初始化数组
接收3个参数,第一个是填充的值,第二个和第三个参数是用于指定填充的起始位置和结束位置
['a', 'b', 'c'].fill(7)
// [7, 7, 7]
new Array(3).fill(7)
// [7, 7, 7]
['a', 'b', 'c'].fill(7, 1, 2)
// ['a', 7, 'c']
2 includes() 示某个数组是否包含给定的值
第一个参数是要查找的值,该数值返回一个布尔值
第二个参数表示搜索的起始位置,默认为0
。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4
,但数组长度为3
),则会重置为从0
开始。
[1, 2, 3].includes(2) // true
[1, 2, 3].includes(4) // false
[1, 2, NaN].includes(NaN) // true
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
3 flat() 用于将嵌套的数组“拉平”,实现扁平化
该方法返回一个新数组,对原数据没有影响
参数中如果传一个数字代表要拉平的层数,默认为1
[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]
[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]
如果要拉平多层嵌套可以把Infinity
关键字作为参数
[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]
4 flatMap() 用于对原数组的每个成员执行一个函数,然后对返回值组成的数组执行flat()
方法
该方法返回一个新数组,不改变原数组。
// 相当于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]
//flatMap()只能展开一层数组。
// 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
[1, 2, 3, 4].flatMap(x => [[x * 2]])
// [[2], [4], [6], [8]]
5 toReversed(),toSorted(),toSpliced(),with()
这四个方法其实和传统的reverse(),sort(),splice()操作一样,唯一的不同是允许对数组进行操作时,不改变原数组,而返回一个原数组的拷贝。
toReversed()
对应reverse()
,用来颠倒数组成员的位置。toSorted()
对应sort()
,用来对数组成员排序。toSpliced()
对应splice()
,用来在指定位置,删除指定数量的成员,并插入新成员。with(index, value)
对应splice(index, 1, value)
,用来将指定位置的成员替换为新的值。const sequence = [1, 2, 3]; sequence.toReversed() // [3, 2, 1] sequence // [1, 2, 3] const outOfOrder = [3, 1, 2]; outOfOrder.toSorted() // [1, 2, 3] outOfOrder // [3, 1, 2] const array = [1, 2, 3, 4]; array.toSpliced(1, 2, 5, 6, 7) // [1, 5, 6, 7, 4] array // [1, 2, 3, 4] const correctionNeeded = [1, 1, 3]; correctionNeeded.with(1, 2) // [1, 2, 3] correctionNeeded // [1, 1, 3]