天天看點

JavaScript進階函數的使用

  • 循環
for(let i = 0 ; i<temp.length;i++){
    return  原來的循環
}  
 for(let  i  in temp){
    return  快速拿到i
}  
 for(let item of  temp){
    return   快速拿到每項  上面是temp[i]去到每一項
}  
           
  • filter函數的使用

    過濾操作

    filter()括号裡面的是回調函數

    filter()中的回調函數有一個要求,必須傳回一個boolean值

    當傳回true時,函數内部會将自動将這次回調的值加入新的數組中

    當傳回false時,函數内部會過濾掉這次的值

    filter()最終傳回的是滿足條件的所有值

const  num =[10,60,55,66,1,500,300,1]
    let  numArr=num.filter(function (n) {
          //n是上面的每個值
        return   n<50
        //return後面接的是判斷條件
        //例如 10<50?  =>true  10加到新的數組裡    6<50?=>false 不加到新的數組裡
    })
   console.log(numArr)
           
  • map函數的使用

    如果想對數組中所有的函數進行操作,用map函數

const  num =[10,60,1,500,300,1];
   let newNums= num.map(function () {
        return n*2
       //return 後面接的是操作
    })
    console.log(newNums);  //[20,120,2,1000,600,2]
           

3.reduce

對數組中所有的元素進行彙總

const  num =[10,60,1,500];
    let  temp = num.reduce(function (prevValue,n) {
        return  prevValue+n
    },0)
    //回調函數後面 的數字 0  是初始值 也就是下面的第一個prevValue
    //  prevValue 是上次傳回的值
    //  第一次 prevValuee是 0 n 是10
    // 第二次 prevValue是 10 n 是60
    // 第三次 prevValue是 70 n 是1
    // 第四次 prevValue是 71 n 是500   因為數組中有四個元素
    //最後一次 傳回最後一次 571

           
  • 另:
//如果數組的值是對象
books:[{
   id:1,
   price:20,
   count:1
},{
   id:2,
   price:40,
   count:2
}]
 num.reduce(function (pre,book) {
      return pre+book.price*book.count
  },0) 
           

4.彙總

  • 把上面的連起來(除了另)
const  num =[10,60,1,500];
    let  temp = num.filter(function (n) {
       return  n<10
    }).map(function (n) {
        return n*2
    }).reduce(function (prevValue,n) {
        return prevValue+n
    },0)
           
  • 把上面的再簡化一下(箭頭函數)

繼續閱讀