数组的5种循环方法

250 阅读2分钟

数组提供循环方法

1.forEach 循环

 var arr = ["张三","李四","王五"];
 arr.forEach(function(item,key,arr){
// item :键值 (arr[i])
// key : 键名 (i);
// arr 是原来的数组
 console.log("键名:",key);
 console.log("键值:",item);
})

2.map 循环 :循环数组的时候再复制一个数组出来

// 新的数组 =  数组.map(function(item,key,arr){});
var arr = ["张三","李四","王五"];
// 返还的新的数组和回调函数里的返还值有关系
var newarr =   arr.map(function(item,key,arr){
        // console.log(item,key,arr);
        return item;  //会被循环返还 
})
console.log(newarr);//["张三","李四","王五"]

//让数组里所有的值都增加30%
var arr = [100,200,300,400,500];
var newarr = arr.map(function(item){
            return item*1.3;
})
console.log(newarr);

3.filter : 过滤 循环 :在循环的过程中进行过滤

var arr = [1,2,3,4,5,6];
var res = arr.filter(function(item,key,arr){    
     // console.log(item,key,arr);
       return item>4;  //把所有大于3的值过滤出来返还给新的数组
})
console.log(res);

4.some 循环: 如果数组循环里返还的结果有一个true 那么返还结果就是true;(或)

var arr = [true,false,false,false];
var res =  arr.some(function(item,key,arr){
            return item;  //循环返还item 只要item里有一个true
            //那么最终返还结果就是true
 })
console.log(res);//true

5.every 循环 :是循环函数里都返还true的时候 最终结果才是true,

只要有一个false ,那么最终结果就是false.

var arr = [4,5,6,4,1];  
var res =  arr.every(function(item,key){
     // 数组里是不是所有的值都大于3;
            return item>3;
})
console.log(res);

循环的拓展

// arr对象里有一个forEach方法
var arr = ["张三","李四","王五"];
arr.forEach(function(item,key,arr){
            console.log(item,key,arr);
})
arr.forEach(function(){}); // 张三 0 (3) ["张三", "李四", "王五"]
                              李四 1 (3) ["张三", "李四", "王五"]
                              王五 2 (3) ["张三", "李四", "王五"]

//1.回调函数(callback): 如果把函数当成实参传入到另一个函数里执行
//那么这个函数就被称为回调函数.
function fn(a) {
            // console.log(a); //ƒ () { console.log("fn...");}
            a();
        }

        var arr = [1,2,3];
        var obj = {name:"张三"};
        var myfn = function () {
            console.log("fn...");
        }
        fn(myfn);//fn...
//2.实现一个myforEach
var arr = ["张三","李四","王五"];
function  myforEach(arr,fn) {
            // arr 是数组  
            // fn是 传入的函数 function (item,key,arr) {}
            // 循环数组
            for(var i=0;i<arr.length;i++){
                fn(arr[i],i,arr);  //会被调用三次 ,回调函数调用传入实参 
            }
 }

// 自己的forEach
myforEach(arr,function (item,key,arr) {  //形参 
             console.log("传入的函数执行",item,key,arr);
})
//二、对象数组  
        var arr = [
        { name: "张三", score: 78 }, 
        { name: "张三", score: 59 }, 
        { name: "张三", score: 89 }, 
        { name: "张三", score: 30 }];
        // 怎么筛选所有及格学员
         var newarr =    arr.filter(function (item) {
            // console.log(item);  //是每一个对象
            return item.score>=60; // 获取每一个对象里的分数大于等于60分;
        })
        console.log(newarr); //筛选出所有及格的学员对象