ES6的学习 数组的热闹循环

let arr = ['张三','李四','王五','赵六']
    for(let i =0; i< arr.length; i++) {
        console.log(arr[i])
    }
    //foreach循环  回调函数里面的三个参数 值 索引 数组
    arr.forEach(function(value,index,arr) {   //这是一个回调函数 回调函数就是调用一次就会执行一次
        console.log(value,index,arr)
    })
    arr.forEach((value,index,arr)=>{
        console.log(value,index,arr)
    })
    // arr.map()  arr.filter()  arr.some()  arr.every() arr.forEach()
    //其实上面的循环 可以接受两个参数
    //****格式=是这样子的  arr.forEach/map...(循环的回调函数,this指向谁)
    arr.forEach(function(value,index,arr) {   //这是一个回调函数 回调函数就是调用一次就会执行一次
        console.log(this,value,index,arr)
    },45)


    //arr.map()  在做和后台的数据交互的时候是非常好用的
    let array = [
        {title: "天气", content: "今日多云转晴",iftrue: true},  //json数据
        {title: "天气1", content: "今日多云转晴2",iftrue: false},
        {title: "天气2", content: "今日多云转晴3",iftrue: true},
    ]
    array.map((value,index,array)=>{
        console.log(value,index,array)
    })
    //一个函数如果没有返回值的话 默认都是undefined
    //需要配合return 返回的是一个新的数组 没有return 相当于forEach
    let str = array.map((value,index,array)=> {
        return 111; //没有返回值的话 就是undefined
    })
    console.log(str)
    //arr.map()可以用来整理数据 非常好用
    let newArray =array.map((item,index,array)=> {
        let data={}
        data.a = `您好${item.title},今天就天气是${item.content}`
        data.b = `${item.title}+不错`
        return data
    })
    console.log(newArray)



    //arr.filter()  用来过来数据 如果为true就保留下来 如果为false则不保存 反之亦然
    let newArray1 = array.filter((item,index,array)=>{
        return item.iftrue == false
    })
    console.log(newArray1)


    //arr.some()类似于查找,数组里面某一个元素复合的话 但会true
    //arr.every() 数组里面的元素都要复合条件 才会返回true
    let newaRRAY = array.some((item,index,array)=>{
        return item.iftrue == true;
    })
    console.log(newaRRAY)
    let newArray2 = array.every((item,index,array)=>{
        return item.iftrue ==true
    })
    console.log(newArray2)
    //使用函数 进行模拟 arr.some()
    let frult = ["apple","orange"]
    function fn(arr,array) {
        return frult.some((item,index,frult)=>{
            return item ==array
        })
    }
    console.log(fn(arr,"apple"))

    //判断一个数组 是否为奇数 arr.every()
    let n = [1,3,5,7,9]
    let m = n.every((item,index,n)=>{
        return item%2 !== 0
    })
    console.log(m)
//******参数不一样了
    //arr.reduce() 求数组的和  从左往右
        let arra = [1,2,3,4,5,6,7,8,9,10]
        let a =arra.reduce((prev,cur,index,arra)=>{  //前一个 当前这个 当前这个索引 当前循环的数组
            return prev+cur; //上一个存储完的结构 加现在的这个数
        })
        console.log(a)
    //arr.reduceRight()  从右往左
        let b = arra.reduceRight((prev,cur,index,arra)=>{
            return prev+cur;
        })
        console.log(b)
    //幂运算符ES6新增   Math.pow(2,3)
    console.log(2**3)

    //ES6新增 for....of.... 遍历数组
    for(let val of arra){
        console.log(val)
    }
    for(let index of arra.keys()){ //索引方法
        console.log(index)
    }
    for(let item of arra.entries()){ //key value
        console.log(item)
    }
    for(let [key,value] of arra.entries()){ //具体的索引和方法
        console.log(key,value)
    }
    //总结 arr.keys() 数组的下标
           //arr.entries()  数组的某一项

猜你喜欢

转载自blog.csdn.net/HANGSOME123/article/details/86185048