高階函數 map、reduce、filter、sort 函數計算

map() 循環遍歷,返回一個新數組 ,reduce()把結果繼續和序列的下一個元素作累積計算

把一個字符串13579先變成Array——[1, 3, 5, 7, 9],再利用reduce()就能夠寫出一個把字符串轉換爲Number的函數。數組

function string2int(s) {
    let arr=s.split('')
    arr=arr.map(v=>{ return +v })
  return    arr.reduce(function(x,y){ return x*10+y })
}
//string2int('123')===123 true

請把用戶輸入的不規範的英文名字,變爲首字母大寫,其餘小寫的規範名字。輸入:['adam', 'LISA', 'barT'],輸出:['Adam', 'Lisa', 'Bart']函數

function normalize(arr){
    arr= arr.map((v,index,array)=>{ 
        let str=array[index].substring(1,array[index].length);
        console.log('str',str)
        let a=v[0].toUpperCase()+ str.toLowerCase()
          return a;
        })
    return arr

} 
if (normalize(['ADam', 'LISA', 'barT']).toString() === ['Adam', 'Lisa', 'Bart'].toString()) {
    console.log('經過!');
}
else {
    console.log('失敗!');
}
//經過

filter 用於把Array的某些元素過濾掉,而後返回剩下的元素

和map()相似,Array的filter()也接收一個函數。和map()不一樣的是,filter()把傳入的函數依次做用於每一個元素,而後根據返回值是true仍是false決定保留仍是丟棄該元素。
求100之內素數測試

function get_primes(arr) {
return arr.filter(function(value){
        // 1和value自己不用考慮
        for(let i=2; i<value; i++){
            if(value%i===0){return false;}
        }
        return value>1;
    });
}

// 測試:
var
    x,
    r,
    arr = [];
for (x = 1; x < 100; x++) {
    arr.push(x);
}
r = get_primes(arr);
if (r.toString() === [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97].toString()) {
    console.log('測試經過!');
} else {
    console.log('測試失敗: ' + r.toString());
}

sort 排序

var arra=[7,2,3,0]
arra.sort((x,y)=>{
    if(x>y){
        return 1
    }
    if(x<y){
        return -1
    }
    return 0
   })
   console.log(arra) // [0, 2, 3, 7]

參考資料

map/reduce3d

相關文章
相關標籤/搜索