Array下的map filter reduce sort

map()方法,返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組

filter(),用于把Array的某些元素過(guò)濾掉,然后返回剩下的元素。
把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是true還是false決定保留還是丟棄該元素,結(jié)果為返回一個(gè)新數(shù)組

reduce(),把一個(gè)函數(shù)作用在這個(gè)Array的[x1, x2, x3...]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce()把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算

sort()是高階函數(shù),是對(duì)原有數(shù)組的調(diào)試,會(huì)改變?cè)袛?shù)組

1.map()
var arr = [1,2,3,4,5];
function getValue(x){
      return x*x;
}
arr.map(getValue);      //[1, 4, 9, 16, 25]

2.filter()-----------常用于篩選,
var arr = [1,2,3,4,5];
function getValue(x){
      return x*x;
}
arr.filter(getValue);         //[1,2,3,4,5]
會(huì)返回跟原數(shù)組相同的元素的原因在于,filter,會(huì)根據(jù)返回值是true還是false決定保留還是丟棄該元素

3.reduce
var arr = [1,2,3,4,5];
function getValue(x){
      return x*x;
}
arr.reduce(getValue);         //1

3.1 reduce累計(jì)計(jì)算 
var arr = [1,2,3,4,5];
function getValue(x,y){
      return x+y;
}
arr.reduce(getValue); //15

3.2 排序  **sort**
var arr = ['apple','1','2','food','ablel','wood'];
arr.sort((x,y) => {
      if(x>y){
            return 1;
        }else if(x<y){
            return -1;
        }else{
            return 0;
        }
})

常見(jiàn)實(shí)例

  1. 只保留數(shù)組中的奇數(shù)或偶數(shù) filter
var arr = [1,2,3,4,5,6,7,8,9,0];
arr.filter(function(x){
    return x%2===0;
})   // [2, 4, 6, 8, 0]
  1. 去掉數(shù)組中的空字符串 filter
var arr = [1,2,null,' ',3,4,5,undefined];
console.log(arr.length);   //8
var value = arr.filter(function(x){
    return x && x.trim();
})
value;  //[1,2,3,4,5]
  1. 去掉數(shù)組中重復(fù)元素 filter
var arr = [1,2,3,4,4,2,5,6,2];
var value = arr.filter(function(ele,index){
    return arr.indexOf(ele) === index;
})
value;  //[1,2,3,4,5,6]
  1. 復(fù)制數(shù)組 slice || concat
    slice截取Array的部分元素,然后返回一個(gè)新的Array
var arr = [1,2,3,4,4,2,5,6,2];
var value = arr.slice();  //[1,2,3,4,4,2,5,6,2]
var value1 = arr.slice(1);  //[2,3,4,4,2,5,6,2]
var value2 = arr.slice(0,3);//[1,2,3]
或者:
var arr = [1,2,3,4,4,2,5,6,2];
var value = arr.concat();
value;  //[1,2,3,4,4,2,5,6,2]

把[1, 3, 5, 7, 9]變換成整數(shù)13579 reduce

var arr = [1, 3, 5, 7, 9];6
var value = arr.reduce(function(x,y){
    return x*10+y;
})
value;  //13579
  1. 請(qǐng)把用戶(hù)輸入的不規(guī)范的英文名字,變?yōu)槭鬃帜复髮?xiě),其他小寫(xiě)的規(guī)范名字。輸入:['adam', 'LISA', 'barT'],輸出:['Adam', 'Lisa', 'Bart']。
//  首字母大寫(xiě)
//    join 屬于數(shù)組的方法 Array.join("-")
//    split()將字符串轉(zhuǎn)換成數(shù)組,string.split(",")
//    stinrg.toUpperCase()
    const arrcase = ['adam', 'LISA', 'barT'];
    let arrnew =  arrcase.map(x => {
        let reset = x.toString();
        let val = x.toString().split("")[0].toUpperCase();
        return val+reset.substring(1,reset.length-1);
    })
    console.log(arrnew);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容