一些特殊的遍历方法

1.forEach(偏操作元素型)

对数组中的每一个元素执行一次函数。

        var arr2 = [1,3,6,7];
        var theSum = 0;
        arr2.forEach(function(value, index, arr) {
            //函数可以传入三个参数,value必写
            //其中value为元素的值,当其为储存对象的数组的时候就为对象
            //index为当前所执行的元素对应数组的下标
            //arr数组本身
            theSum += value;
        })
        console.log(theSum); //17
注意: 除了抛出异常以外,没有办法中止或跳出 forEach() 循环。如果你需要中止或跳出循环,forEach() 方法不是应当使用的工具。

2.filter(元素筛选)

用来测试数组的每个元素的函数。返回 true 表示该元素通过测试,保留该元素,false 则不保留。该方法的传入参数与foreach一致        // filter 筛选数组

    <script>
        // filter 筛选数组
        var arr = [12, 66, 4, 88, 3, 7];
        var newArr = arr.filter(function(value, index) {
            return value >= 12;
            //符合条件要求的就返回
       //等式左边需要有一个数组来接收参数
        });
        console.log(newArr); // 12 66 88
    </script>

利用该方法数组去重:

        // filter 筛选数组
        var arr = [12, 2, 2, 3, 3, 7];
        var newArr = arr.filter(function(value, index) {
            return index == arr.indexOf(value);
        });
        console.log(newArr);

 

3.some(判断元素是否存在)

        // some 查找数组中是否有满足条件的元素 
        // var arr = [10, 30, 4];
        // var flag = arr.some(function(value) {
        //     // return value >= 20;
        //     return value < 3;
        // });
        // console.log(flag);
        var arr1 = ['red', 'pink', 'blue'];
        var flag1 = arr1.some(function(value) {
            return value == 'pink';
        });
        console.log(flag1);
        // 1. filter 也是查找满足条件的元素 返回的是一个数组 而且是把所有满足条件的元素返回回来
        // 2. some 也是查找满足条件的元素是否存在  返回的是一个布尔值 如果查找到第一个满足条件的元素就终止循环

 

4.Object.keys (遍历对象属性)

用于获取对象身上所有可以枚举的属性名

        // 用于获取对象自身所有的属性
        var obj = {
            id: 1,
            pname: '手机',
            price: 2000,
            num: 666
        };
        var arr = Object.keys(obj);
        console.log(arr);
        arr.forEach(function(value) {
            console.log(value);
        })

返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。

 

posted @ 2020-05-10 15:24  Dokom  阅读(166)  评论(0编辑  收藏  举报