js_Array类型_迭代方法

ES5定义了5种迭代方法:every(),filter(),forEach(),map(),some()

每个方法都接受两个参数:1.要在每一项上运行的函数。2.运行该函数的作用域对象————影响this的值(可选)

要在每一项上运行的函数接收三个参数:1.数组项的值(item)。2.该项在数组中的位置(index)。3.数组对象本身(array)

every()————对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true

var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
        var everyResult=numbers.every(function(item,index,array){
            return item>2;
        });
        alert(everyResult);//false

some()————对数组中的每一项运行给定函数。如果函数对任一项返回true则返回true

var someResult=numbers.some(function(item,index,array){
            return item>2;
        });
        alert(someResult);//true

filter()————对数组中的每一项运行给定函数,返回该函数回返回true的项组成的数组

var filterResult=numbers.filter(function(item,index,array){
            return item>2;
        });
        console.log(filterResult);//[3,4,5,4,3]

map()————对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组

var mapResult=numbers.map(function(item,index,array){
            return item*2;
        });
        console.log(mapResult);//[2,4,6,8,10,8,6,4,2]
        console.log(numbers);//[1,2,3,4,5,4,3,2,1]

forEach()————对数组中的每一项运行给定函数,这个方法没有返回值

var newArr=[];
        numbers.forEach(function(item,index,array){
            if(item>2){
                newArr.push(array[index]*2);
            }
        });
        console.log(newArr);//[6,8,10,8,6]

迭代方法接收的第二个值

        var arr = [5, 10, 15, 15, 14, 58];
        var obj = {
            a: 0
        };
        arr.forEach(function (item, index, array) {
            if (item > 5) {
                this.a += 1;
            }
        }, obj);
        console.log(obj.a);//5

接收一个对象,确定this的指向。

总结说人话

  • 五个数组的迭代函数都接受一个函数用来处理数组。而用以处理数组的函数接受三个值:item(数组中对应项本身的值),index(数组中对应项的序数),array(数组对象本身)
  • some和every用来判断数组中每一项是否满足函数的判断要求(比如要求大于某某数),且处理函数必须对每一项返回true或者false,当任意一项经过函数处理后返回true,some方法即返回true。当全部项返回true,every方法返回true。
  • filter要求处理函数必须返回true,若处理函数在处理数组某一项时返回true,则将这一item添加到一个新数组中,最后返回全部被处理函数返回true的item组成的新数组。
  • map不要求处理函数返回true,但它要求处理函数返回经过处理的item,并将其组成新数组进行返回。
  • forEach没有返回值。它会把每一项都进行处理或者判断。但凡需要对数组每一项进行同样的处理或者判断均可使用这个函数。
  • 以上五个函数都不会对原数组进行任何修改。
posted @ 2020-03-06 12:04  Syinho  阅读(256)  评论(0编辑  收藏  举报