1. 程式人生 > >js數組的叠代器方法(some、every、forEach、map、filter)

js數組的叠代器方法(some、every、forEach、map、filter)

reac floor all com mat pan scrip links 第一個

數組操作之叠代器方法(這些方法可以對數組中的每一個元素運用某個方法)

一、不生成新數組的叠代器方法

1、forEach方法(接收一個函數作為參數)

function square(num){
        alert(num * num) ;
    }
    var nums = [1,2,3,4,5];
    console.log(nums.forEach(square));

2、every方法(接收一個返回值為布爾值的函數,對數組中的每一個元素使用該函數)

function isEven (num) {
        return num % 2==0;
    }
    
var evens=[2,4,6,8,10]; var isAllEven = evens.every(isEven); //當且僅當數組中的所有的元素返回為真,every函數才會返回為真 if(isAllEven){ alert("all is even"); }else{ alert("not all is even"); }

3、some方法(只要數組中有一個元素使用方法返回為真,some函數就會返回真)

var nums = [1,2,3,5,7,9];
        function isEven (num) {
        
return num % 2==0; } alert(nums.some(isEven)); //true

4.reduce方法

  用法①:為數組中的元素求和

function add (currentTotal,currentValue) {
                //alert(currentValue);
                //alert(currentTotal);
                return currentTotal+currentValue;
            }
            var nums = [1,2,3,4,5,6,7];
            alert(nums.reduce(add));

  用法②:將數組中的元素連接成一個長的字符串  

function linkStr (foreStr,currentStr) {
                return foreStr + currentStr;
            }
            var strings = ["nolan","is","studying","javascript"];
            alert(strings.reduce(linkStr));

二、生成新數組的叠代器方法

  1.map方法(類似於不生成新數組中的forEach方法)

  用法①:取數組中每個單詞的第一個字母

function firstAlpha (word) {
            return word[0].toUpperCase();
        }
        var words = ["nolan","is","studying","javascript"];
        var firstAlphas = words.map(firstAlpha);
        alert(firstAlphas.join(""));   //使用join可以去掉連接數組元素的逗號

 2.filter方法(類似於every方法)

用法①:篩選出符合條件(即返回值為true)的元素 

function isEven (num) {
            return num % 2==0;
        }
        var nums=[1,2,4,6,8,10];            
        var evens = nums.filter(isEven);
        alert(evens);
        //案例:隨機生成一些成績,挑選出大於六十分的成績
        function pass (grade) {
            if(grade>60){
                return true;
            }else{
                return false;
            }
        }
        var grades = [];
        for(var i=0;i<20;i++){
            grades[i]=Math.floor(Math.random()*101);
        }
        alert(grades);
        var passedGrades=grades.filter(pass);
        alert(passedGrades);

js數組的叠代器方法(some、every、forEach、map、filter)