- 扩展运算符: 用三个点(...)表示,可以将一个数组转为用逗号分隔的参数序列,主要用于函数调用。
- Array.from():可以将两类对象转为真正的数组:类似数组的对象和可遍历(iterable)的对象(包括ES6新增的数据结构Set和 Map)。
- Array.of():Array.of()方法用于将一组值,转换为数组。
- find():数组实例的find方法,用于找出第一个符合条件的数组成员,它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
- findIndex():返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
- fill():使用一个固定值来替换数组中的元素,共有三个参数(value,startIndex,endIndex),固定值,起始位置和结束位置。 注意,如果填充的类型为对象,那么被赋值的是同一个内存地址的对象,而不是深拷贝对象。
- includes():表示某个数组是否包含给定的值,与字符串的includes方法类似。
- flat(): 按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。 对原数据没有影响,不管有多少层嵌套,都可以转成一维数组。 arr.flat(depth) 参数depth可选,指定要提取嵌套数组的深度,默认值为1,当传入Infinity时,相当于扁平化最深层次的数组。
数组遍历方法总结:
1.forEach: 循环遍历数组的每个元素并执行一个回调函数,回调函数有三个参数(value遍历的数组项,index数组的索引,arrray当前数组),forEach对空数组不执行,缺点是不能中断循环,使用return语句也不能中断,forEach不支持break操作,使用break会导致报错。
2.map: 返回一个有原来数组元素调用一个函数后的返回值组成的新数组,不会修改调用的数组,不会对空数组进行检测。
3.filter: 返回原始数组中符合条件的所有元素组成的新数组,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加。
3.every: every 执行每个回调函数都返回true的时候才会返回true,当遇到false的时候终止执行,返回false。
4.some: 有一个回调函数返回true的时候终止执行并返回true,否则返回false。
对空值的处理:ES5 对空位的处理,已经很不一致了,大多数情况下会忽略空位。 forEach(), filter(), reduce(), every() 和some()都会跳过空位。 map()会跳过空位,但会保留这个值 join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串。
案例代码讲解:
<script>
Array.of(3,11, 8) // [3,11,8]
Array.of(3) // [3]
[3, 4, 10, 15].find(function(value, index, arr) {
return value > 9;
}) // 10
[3, 4, 10, 15].findIndex(function(value, index, arr) {
return value > 9;
}) // 2
['a', 'b', 'c'].fill(3, 1, 2) //['a', 3, 'c']
[1, 2, 3].includes(2) //true
var arr = [1, 2, [3]]
var newArr = arr.flat(); //[1,2,3]
var arr = [1,2,3,4,5,6,7,8,9];
// forEach
arr.forEach(function(value,index,array){
//执行业务逻辑
});
// for循环
for (let index = 0; index < arr.length; index++) {
console.log(arr[index]);
}
//filter
let res = arr.filter((num) => {
return num > 6;
});
console.log(res); // [7, 8, 9]
// every
var flag=arr.every(function(x){
return x>3
})
console.log(flag); // false
</script>