copyWithin()
在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。
- target(必需):从该位置开始替换数据。如果为负值,表示倒数。
- start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
- end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。
find() 和 findIndex()
- find() 用于找出第一个符合条件的数组成员
若找到为true,否则返回 undefined
[11, 5].find(function(value, index, arr) {
return value > 9;
})
value: 当前值,;index:当前位置,;arr:原数组
- findIndex() 用于找出第一个符合条件的数组成员的位置,若不存在返回-1
[11, 5].findIndex(function(value, index, arr) {
return index> 0;
})
indexOf方法无法识别数组的NaN成员;findIndex方法可以借助Object.is方法做到。
[NaN].indexOf(NaN)
// -1
[NaN].findIndex(y => Object.is(NaN, y))
// 0
fill()
使用给定值,填充一个数组
fill方法用于空数组的初始化,数组中已有的元素,会被全部抹去。
第一参数、第二个和第三个参数,用于指定填充的数值、起始位置和结束位置。
entries(),keys() 和 values()
- keys()是对键名的遍历;
- values()是对键值的遍历;
- entries()是对键值对的遍历。
includes()
返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似,有些浏览器不兼容。
第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-3,但数组长度为2),则会重置为从0开始。
检查当前环境是否支持该方法,如果不支持,部署一个简易的替代版本。
const contains = (() =>
Array.prototype.includes
? (arr, value) => arr.includes(value)
: (arr, value) => arr.some(el => el === value)
)();
contains(['foo', 'bar'], 'baz'); // => false
flat(),flatMap()
- flat():用于拉平数组,默认只能拉平一层,若需多层则flat(2),参数为整数;
参数为 Infinity,可实现不确定层数的数组拉平
[16, 62, [36, [64, 5]]].flat()
// [16, 62, 36, [46, 5]]
[14, 2, [43, [4, 45]]].flat(2)
// [41, 2, 43, 4, 45]
- flatMap()
方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。仅能展开一层
网友评论