8、ES6笔记之数组循环的多种方法

循环数组的多种方法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>数组多种方法</title>
</head>

<body>

</body>

<script>
    // 数组的循环
    // 原来  for  while
    // es5   forEach() map()  filter()  some() every() reduce()  reduceRight()

    // forEach(fun(),this指向)   也可以直接用bind绑定this指向  如果是用箭头函数的写法 没办法改变this的指向的

    let arr = [1, 2, 3, 4, 5];
    // 1.forEach():代替普通的for循环   
    // arr.forEach(function(val,index,arr){
    //     console.log(val,index,arr)
    // }.bind(123))

    // 2. map():非常有用   数据交互的时候
    // arr.map(function(val,index,arr){
    //     console.log(val,index,arr)
    // })

    //3.filter()
    // arr.filter(function(val,index,arr){
    //     console.log(val,index,arr)
    // })

    // arr.some(function (val, index, arr) {
    //     console.log(val, index, arr)
    // })
</script>

<script>
    // map   正常情况下需要配合return 返回一个新数组   若是没有return,相当于forEach
    //平时只要是用map,最好是有return,可以重新整理数据

    {
        let arr = [{
                title: '新闻1',
                count: 100,
                hot: true
            },
            {
                title: '新闻2',
                count: 100,
                hot: true
            },
            {
                title: '新闻3',
                count: 100,
                hot: true
            },
            {
                title: '新闻4',
                count: 100,
                hot: true
            }
        ]

        let newarr = arr.map(function (val, index, arr) {
            let json = {};
            json.title = val.title;
            json.count = val.count;
            json.hot = val.hot ? '最热' : '普通'
            return json;
        })
        console.log(newarr)
        //返回的值
        // 0:{title: "新闻1", count: 100, hot: "最热"}
        // 1: {title: "新闻2", count: 100, hot: "最热"}
        // 2: {title: "新闻3", count: 100, hot: "最热"}
        // 3: {title: "新闻4", count: 100, hot: "最热"}


    }
</script>

<script>
    // filter  过滤  过滤一些不合格的数据
    {

        let arr = [{
                title: '新闻1',
                count: 100,
                hot: true
            },
            {
                title: '新闻2',
                count: 100,
                hot: false
            },
            {
                title: '新闻3',
                count: 100,
                hot: false
            },
            {
                title: '新闻4',
                count: 100,
                hot: true
            }
        ]

        //过滤掉不是热门的新闻
        let newarr = arr.filter(function (val, index, arr) {
            return val.hot == true;
        })
        console.log(newarr) //返回的事hot为true的数据


    }
</script>


<script>
    // some   类似查找  只有某一个元素符合条件,返回true

    {

        let arr = [{
                title: '新闻1',
                count: 100,
                hot: true
            },
            {
                title: '新闻2',
                count: 100,
                hot: false
            },
            {
                title: '新闻3',
                count: 100,
                hot: false
            },
            {
                title: '新闻4',
                count: 100,
                hot: true
            }
        ]

        //过滤掉不是热门的新闻
        let newarr = arr.some(function (val, index, arr) {
            return val.title == '新闻1';

        })
        console.log(newarr) //true


    }
</script>

<script>
    // every 数组里的所有元素都要符合条件才返回true
    {

        let arr = [1, 3, 5, 7, 9];

        //判断这个数组是不是都是奇数
        let newarr = arr.every(function (val, index, arr) {
            return val % 2 == 1;

        })
        console.log(newarr) //true
    }
</script>

<script>
    //  reduce(fun(前一个,当前,下标,所在数组))    

    {
        let arr = [1, 2, 3, 4, 5];
        // 利用他来求数组的和
        let sum = arr.reduce(function (prev, cur, index, arr) {
            return cur + prev;
        })
        console.log(sum) //15

        // 利用他来求阶乘
        let jc = arr.reduce(function (prev, cur, index, arr) {
            return prev * cur;
        })
        console.log(jc) //120

    }
</script>

<script>
    // reduceRight()  从右往左

    {
        let arr = [1, 2, 3, 4, 5];
        // 利用他来求数组的和
        let sum = arr.reduceRight(function (prev, cur, index, arr) {
            return cur + prev;
        })
        console.log(sum) //15

    }
</script>

<script>
    // for-of遍历
    // 新增 arr.keys()某项的下标   arr.entries()某项的值
    {
        let arr = [1, 2, 3, 4, 5];

        for (var value of arr) {
            console.log(value);
        }

        for (var index of arr.keys()) {
            console.log(index);
        }


        for (var item of arr.entries()) {
            console.log(item);
        }


        for (var [key, val] of arr.entries()) {
            console.log(key, val);
        }

    }
</script>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值