JavaScript操作数组方法总结

  •  扩展运算符: 用三个点(...)表示,可以将一个数组转为用逗号分隔的参数序列,主要用于函数调用。
  •  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>
                    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunflower-YongMei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值