ES6学习之路(四) 数组拓展

数组扩展主要介绍了一些新的方法

Array.from();

将类似数组的对象和可遍历的对象转换为真正的数组
只要拥有length属性 就可以用Array.from()来转换成真正的数组

        let arrayLike = {
            '0':'a',
            '1':'b',
            '2':'c',
            length:3
         }

         let arr2 = Array.from(arrayLike);
         console.log(arr2[0],arr2[1],arr2[2]);//a,b,c

         //转换字符串
         console.log(Array.from('hello'));//[h,e,l,l,o]

        //将数组中布尔值为false的值转换为0
         console.log(Array.from([1,,2,,3],(n)=>n||0));//[1,0,2,0,3]

        //返回各种数据类型
         function typeOf(){
            return console.log(Array.from(arguments,value => typeof value));
         }
         typeOf(null,[],'ss',NaN);//["object", "object", "string", "number"]

         //指定第二个参数的运行次数
         let ss = Array.from({length:2},()=>'jack')
         console.log(ss);//["jack", "jack"]

Array.of()

用来弥补Array构造函数的不足;用来将一组值转换为数组

        console.log(Array());//[]
        console.log(Array(3));//[undefined,undefiend,undefined]
        console.log(Array(3,10));//[3,10];

        //弥补了上方代码中参数不同导致的结果不一样;
        console.log(Array.of());//[]
        console.log(Array.of(undefined));//[undefined]
        console.log(Array.of(3,4,5));//[3,4,5]
        console.log(Array.of(3));//[3]
        console.log(Array.of(3).length)//1

数组实例的copyWithin()

它接受三个参数。
// target(必需):从该位置开始替换数据。
// start(可选):从该位置开始读取数据,默认为0。如果为负值,表示倒数。
// end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。
// 这三个参数都应该是数值,如果不是,会自动转为数值。

        //从0开始替换,从3号位置开始读取,直到数组结束读取到【4,5】,那么就从0替换【1,2】
        var arr = [1,2,3,4,5].copyWithin(0,3);
        console.log(arr);//[4, 5, 3, 4, 5]

        //从0开始,读取三号位与4号位之间的数,替换
        console.log([1,2,3,4,5].copyWithin(0,3,4));//[4, 2, 3, 4, 5]

        //负数的情况是倒数的,-2等于是整数的3号位,-1相当于4号位
        console.log([1,2,3,4,5].copyWithin(0,-2,-1));//[4, 2, 3, 4, 5]

find() & findIndex()

查找数组中符合条件的第一个成员,没有找到就返回undefined,它的参数是一个回调函数

        console.log([1,2,3,-4,6].find((n)=>n<0));//-4
        console.log([1,2,3,4,6].find((n)=>n<0));//undefined

find()的回调函数可以接收三个参数,分别是当前的值,当前的位置,和原数组

        var arr1 = [1,5,10,15].find(function(value,index,arr){
            return value>9;
        })
        console.log(arr1);//10
//findIndex用法与find()类似,只是结果返回的是符合条件成员的位置,没有找到就返回-1
        var arr2 = [1,5,10,15].findIndex(function(value,index,arr){
            return value>9;
        })
        console.log(arr2);//2
        var arr3 = [1,5,10,15].findIndex(function(value,index,arr){
            return value>20;
        })
        console.log(arr3);//-1

fill()

数组实例的填充方法,可以有三个参数,第一个是填充值,第二个是填充起始位置,第三个是填充结束位置;

        //一个参数就代表全部填充,之前的值会被删除
        let arr1 = ['a','b','c'].fill(7);
        console.log(arr1);//[7,7,7]
        //三个值
        let arr2 =['a','b','c'].fill(7,1,2);
        console.log(arr2);// ["a", 7, "c"]
        //用于初始化数组时
        let arr3 = new Array(3).fill(7);
        console.log(arr3);//[7,7,7]

数组实例 entries(),keys(),values()

都是用于遍历数组的,可以用for…of循环进行遍历;

        //keys(),遍历键名
        for(let index of ['a','b'].keys()){
            console.log(index);//0,1
        }
        //values()遍历键值
         for (let elem of ['a', 'b'].values()) {
           console.log(elem);//a,b
         }

        for(let [index,elem] of ['a','b'].entries()){
            console.log(index,elem);
        }
        // 0 "a"
        // 1 "b"

        //如果不使用for....of遍历器,那么可以调用遍历器的 next方法
        let letter = ['a','b','v'];
        let entries = letter.entries();
        console.log(entries.next().value);//[0,a];

Array.prototype.includes()

方法用来检测数组中是否包含给定的值,与字符串的includes方法类似

        console.log([1,2,3].includes(3));//true
        console.log([1,2,3].includes(0));//false
        //也可以用来检测NaN
        console.log([1,2,NaN].includes(NaN))//true

        //includes包含两个参数,第二个参数是开始检索的位置,如果是负数就是倒数,超出数组范围就从0开始检索;

        console.log([1,2,3].includes(3,3));//false
        console.log([1,2,3].includes(3,-1));//true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值