原生JS迭代遍历方法使用指南

在原生JS中,除了for循环以外,自身还带有5中迭代的方法,可根据场景自行选择,十分方便

1.forEach
forEach十分好用,数组的forEach回调函数中写入执行代码段就可以,回调函数有三个参数,第一个为数组的每一个值,第二个参数为index下标,第三个参数为当前数组,但是注意的是forEach不能通过在For循环中使用return或者return false、break等方法终止遍历,jQuery中的$.each方法break使用return false,continue使用return true

            var arr = [0,1,2];
            arr.forEach(function (val,idx,arr) {
                console.log(val);   //1,2,3
            });

使用forEach遍历数组想要终止循环可以通过try catch抛出异常的形式来终止循环

            try{
                arr.forEach(function (val,idx) {
                    if (val < 2) {
                        console.log(val);
                    } else {
                        foreach.break = new Error("Stop");
                    }
                });
            }catch(e){
                console.log(e.message);
                if (e.message == 'foreach is not defined') {
                    return;
                }
            }

2.every
every的遍历会对数组的每一个值执行回调函数中的语句,只有在每一个值都为true时,整个遍历返回值为true,否则为false

            var test = arr.every(function (val,idx) {
                return (val > 1);
            });
            console.log(test);  //false

3.filter
filter对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组

            var arr = [0,1,2,3,4];
            var test = arr.filter(function (val,idx) {
                return (val > 1);
            });
            console.log(test);  //[2,3,4];

4.map
map会为数组的每一个值去执行代码块,对返回的结果(布尔值)组成一个数组,作为整个遍历的返回值

            var arr = [0,1,2,3,4];
            var test = arr.map(function (val,idx) {
                return (val > 1);
            });
            console.log(test);  //[false, false, true, true, true];

5.some
some方法类似于 || 的逻辑语句判断,会为数组每一个值执行判断语句,只要有一个满足条件,整个遍历的返回值就为true

            var arr = [0,1,2,3,4];
            var test = arr.some(function (val,idx) {
                return (val > 5);
            });
            console.log(test);  //false;

除了以上的书写回调的函数方法,还有两个方法值得学习:
for in 和for of

for in:

            var obj = {
                name: 'zhangsan',
                age: 18
            }
            for (var item in obj) {
                console.log(item);      //name age
            }

for in可以用来循环对象,item为每个键值对的key,可以使用类似obj[item]的方式得到value

for of:

            for(var item of Object.keys(obj)) {
                console.log(item + ':' + obj[item]); //name:zhangsan age:18
            }

for of可以遍历大多数的类数组对象,但是不支持遍历对象,遍历对象可以使用上面的方法,还有,for of 是在ES6中新添加的方法,注意浏览器的兼容

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值