ES6数组的扩展

一、数组的扩展运算符

二、数组对象新增的方法

二、数组的实例新增的方法

1、数组的扩展运算符是三个点(…),它好比rest参数的逆运算,将一个数组转换为用逗号分隔的参数序列

console.log(...[1,2,3]);//1  2  3
console.log(1,...[2,3,4,5],6);//1  2  3  4  5  6

2、数组的扩展运算符主要用于函数调用

function add(x,y){
    return x + y
}
const numbers = [4,38]
console.log(add(...numbers));//42

let array = []
function push(array,...items){
    array.push(...items)
}
push(array,1,2,3,4,5)
console.log(array);//[ 1, 2, 3, 4, 5 ]

3、数组对象新增的方法
(1)Array.from() 将类数组对象和可遍历的对象转为真正的数组
将一个类似数组的对象转为数组

let arrayLike = {
    '0':'a',
    '1':'b',
    '2':'c',
    length:3
}
let arr = Array.from(arrayLike)
console.log(arr);//[ 'a', 'b', 'c' ]

将一个可遍历的对象转为数组

let set1 = new Set([1,2,3,3])
console.log(set1);//Set(3) { 1, 2, 3 }
console.log(Array.from(set1));//[ 1, 2, 3 ]

(2)Array.of() 将一组值转为数组

console.log(Array.of('a','b','c'));//[ 'a', 'b', 'c' ]
console.log(Array.of());//[]
console.log(Array.of(1));//[ 1 ]
console.log(Array.of(null));//[ null ]

4、数组的实例新增的方法
(1)、find() 返回符合条件的第一个数组元素,如果没有符合条件的元素,则返回undefined,参数为一个回调函数

let arr = [1,2,3,3,2,1];
console.log(arr.find((n)=>{return n>1}));//2

find()方法的参数回调函数可以接受三个参数,以此为当前的值、当前的位置和原数组

let arr1 = [1,5,10,15];
console.log(arr1.find((value,index,arr1)=>value>9));//10

(2)、findIndex()返回符合条件的第一个数组元素的索引,如果没有找到返回-1,参数为一个回调函数

let arr2 = [10,3,23,-2,10,4];
console.log(arr2.findIndex((value)=>value>15));//2

(3)、fill()填充一个数组,有三个参数,第一个参数填充的对象,第二个参数和第三个参数指定了填充的起始位置和结束位置

console.log(['a','b','c'].fill(7));//[ 7, 7, 7 ]
console.log(new Array(3).fill('a'));//[ 'a', 'a', 'a' ]
console.log([1,2,3].fill('a',1,2));//[ 1, 'a', 3 ]
console.log([1,2,3].fill('a',0,2));//[ 'a', 'a', 3 ]

(4)、keys()对键名的遍历 values()对键值的遍历 entries()对键值对的遍历

let arr = ['a','b','c']
for(let index of arr.keys()){
    console.log(index);// 0  1  2
 }
for(let ele of arr.values()){
    console.log(ele);//'a'  'b'  'c'
}
for(let[index,ele] of arr.entries()){
    console.log(index,ele);//0--'a'  1--'b'  2--'c'
}

如果不使用for…of循环,可以手动调用遍历器对象的next方法,进行遍历。

let arr = ['lisi','wanger','zhansan']
let a = arr.entries()
console.log(a);
console.log(a.next().value);//[ 0, 'lisi' ]
console.log(a.next().value);//[ 1, 'wanger' ]
console.log(a.next().value);//[ 2, 'zhansan' ]
console.log(a.next().value);//undefined

( 5)、includes(),表示某个数组是否包含指定的值,返回一个布尔值

console.log([1,2,3].includes(2));//true
console.log([1,2,3].includes(4));//false
console.log([1,2,undefined].includes(undefined));//true

(6)、flat() 将嵌套的数组拉平变成一维数组,该方法返回一个新的数组,不改变原数组

console.log([1,[2,3],[4,5]].flat());//[1,2,3,4,5]

flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

 console.log([1,2,[3,[4,5]],6].flat());//[ 1, 2, 3, [ 4, 5 ], 6 ]
console.log([1,2,[3,[4,5]],6].flat(2));//[ 1, 2, 3, 4, 5, 6 ]

如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。

console.log([1,[2,[3,[4,5],6],7],8].flat(Infinity));
//[1,2,3,4,5,6,7,8]

(7)、flatMap()对原数组的每个成员执行一个函数,然后对返回值组成的数组执行flat()方法,该方法返回一个新的数组,不改变原来的数组

console.log([2,3,4].flatMap((val)=>[val,val*2]));
//[ 2, 4, 3, 6, 4, 8 ]

flatMap()只能展开一层数组

console.log([1,2,3].flatMap(val=>[[val*2]]));
//[ [ 2 ], [ 4 ], [ 6 ] ]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值