2018-11-07

js中數(shù)組<三>(第九篇)


直接上主題:
這篇介紹常用的、好用的js數(shù)組方法,有以下幾個

  • map()
  • reduce()
  • filter()
  • forEach()

map方法——求數(shù)組的映射

  • 不改變元素組本身(但是可以自己在回調函數(shù)中改變)

先看例子:

例子1:有一個數(shù)組["連云港","杭州","廣州","蘇州"],求出對應所在的省份?
["江蘇","浙江","廣東","江蘇"],這個時候就可以使用map方法
例子2:有一分數(shù)數(shù)組[23,34,64,78,88,93,45],分數(shù)小于60的為不及格,大于等于六十小于90為及格,大于等于90為優(yōu)秀;
代碼實現(xiàn):

let arr = [23,34,64,78,88,93,45];
let arr1 = arr.map((value,index,arr) => {
    if(value<60){
        return "不及格";
    }else if(value>=60&&value<90){
        return "及格";
    }else{
        if(value>=90){
            return "優(yōu)秀";
        }
    }
})
console.log(arr);
console.log(arr1);
    
js數(shù)組map()方法

如果上面的代碼配合js的簡寫方式就非常簡單如下:

    let arr = [23,34,64,78,88,93,45];
    let arr1 = arr.map(value =>  value < 60 ? "不及格" : value >= 60 ? "及格" : "優(yōu)秀");
    console.log(arr);
    console.log(arr1);

一行代碼就搞定,結果和上面是一樣的

參數(shù)詳解

語法
arr.map(function(currentValue,index,arr),thisValue)

參數(shù)說明:

<table >
<tr>
<th>參數(shù)</th>
<th>描述</th>
</tr>
<tr>
<td>function(currentValue, index,arr)</td>
<td>必須。函數(shù),數(shù)組中的每個元素都會執(zhí)行這個函數(shù)
函數(shù)參數(shù):
<table >
<tr>
<th>參數(shù)</th>
<th>描述</th>
</tr>
<tr>
<td>currentValue</td>
<td>必須。當前元素的值</td>
</tr>
<tr>
<td>index</td>
<td>可選。當前元素的索引值</td>
</tr>
<tr>
<td>arr</td>
<td>可選。當前元素屬于的數(shù)組對象</td>
</tr>
</table>
</tr>
<tr>
<td>thisValue</td>
<td>可選。對象作為該執(zhí)行回調時使用,傳遞給函數(shù),用作 "this" 的值。如果省略了 thisValue ,"this" 的值為 "undefined"</td>
</tr>
</table>

let arr = [2,5,6,7,8];
let arr1 = arr.map(function(value,index,arr,aaa){// 最后aaa用來測試傳入的參數(shù)個數(shù),也可以在程序中用arguments測試
    console.log(value,index,arr,aaa,);//打印回調函數(shù)參數(shù)
    if(value%2){
        arr[index] = `${value}是${this.type2}`//改變原數(shù)組
        return `${value}是${this.type2}`
    }else{
        return `${value}是${this.type1}`
    };
},{type1:"奇數(shù)",type2:"偶數(shù)"});
console.log(arr);
console.log(arr1);
js數(shù)組map()方法參數(shù)

reduce方法——調用后數(shù)組返回一個值(從左到右)

例子1 最常用的就是可以用reduce方法求一個數(shù)組中元素的和:

let arr = [2,5,6,7,8];
let arr1 = arr.reduce(function(itme,value){
   return itme+value;
})
console.log(arr);   //值為:[2,5,6,7,8]
console.log(arr1);  //值為:28

reduce方法中的參數(shù):

let arr = [2, 5, 6, 7, 8];
let arr1 = arr.reduce(function (itme,value) {
    console.log(arguments);//函數(shù)的傳入?yún)?shù)
    return itme+value;
    console.log("能出來嗎?");//return后的不執(zhí)行
 });
js數(shù)組reduce()方法參數(shù)

還有一個與reduce類似的方法 reduceRight(),reduce是從左向右計算,二reduceRight是從右往左計算,其參數(shù)都是一樣的,

filter() 檢查數(shù)組所有元素并返回符合要求的元素;

例子1: 一組成績表[12,65,78,48,89,98,88,38],求所有及格成績(分數(shù)大于等于60分的);程序實現(xiàn)同時查看函數(shù)的參數(shù):

       let arr = [12, 65, 78, 48, 89, 98, 88, 38];
       let arr1 = arr.filter(function (itme, value) {
           console.log(arguments);
           if (itme >= 60){
               return itme;
           }
       });
       console.log(arr);
       console.log(arr1);

js數(shù)組filter()方法參數(shù)

forEach() 列出數(shù)組中的每一個元素,非常常用的方法,和和for……of、for……in方法類似,用于數(shù)組的遍歷

例子1: 打印[1,5,6]這個數(shù)組中的每個元素同時將這個數(shù)組中元素接在[1,2,3]數(shù)組后面
實現(xiàn)代碼:

 let arr = [1, 5, 6];
        let arr1 = [1,2,3]
        arr.forEach(function (value) {
            console.log(arguments);
            console.log(value)//遍歷數(shù)組arr中的值
            this.push(value);//將數(shù)組arr中值添加到arr1中,其中this是forEach第二個參數(shù)指定的
            
        }, arr1)//指定this,如果不指定這個參數(shù),或者指定為null、undefinded 則this指向全局對象
        console.log(arr);
        console.log(arr1);

js數(shù)組forEach()方法參數(shù)

<完>
20181028


發(fā)揮不廣泛微信公眾號

發(fā)揮不廣泛

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容