• ES5中的数组方法


    forEach方法

    var person = [

      {

         "name" : "张三",

          "sex" :  0 ,

          "age" : 18

        },

      {

         "name" : "李四",

          "sex" :  0 ,

          "age" : 20

        },

      {

         "name" : "王五",

          "sex" :  1 ,

          "age" : 19

        },

    ]

    <ul>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

    </ul>

    forEach(callback,[obj])

    callback中5接收了三个参数  运行几次决定于arr的length

    obj j决定了callback中的this指向

    person.forEach(function(ele,index,self){

    console.log(ele,index,self,this)

    })

    person.forEach(function(ele,index,self){

    console.log(ele,index,self,this)

    this[index].innerHTML = ele.name;

    },document.getElementsByTagName("li"))

    自定义封装数组方法:

    Array.prototype.myForEach = function(fun){

    var _arr = this;

    var len = _arr.length;

    var param2 = arguments[1] || window;

    for(var i = 0;i < len;i++){

    // fun.call(param2,_arr[i],i,_arr)

    fun.apply(param2,[_arr[i],i,_arr])

    }

    }

    personArr.myForEach(function(ele,index,self){

    console.log(ele,index,self,this)

    this[index].innerHTML = ele.name;

    },document.getElementsByTagName("li"))

    filter方法  过滤

    person.filter(callback,object)

    返回一个新的数组,callback返回值如果为true,就会在新数组中,false,就不存在

    var  newArr = person.filter(function(ele,index,self,this){

        console.log(ele,index,self,this);

         return true;

         if(ele.sex == 0){

           return true ;

            else{

          return false;

         }

          return ele.sex ==1;

         },{

          name : "hh"

        })

    自定义封装方法

    Array.prototype.myFilter = function(fun){

    var _arr = this;

    var len = _arr.length;

    var param2 = arguments[1] || window;

    var newArr = [];

    for(var i = 0;i < len;i++){

    fun.apply(param2,[_arr[i],i,_arr]) ? newArr.push(_arr[i]) : "";

    }

    return newArr;


    var newArr = personArr.myFilter(function(ele,index,self){

    return ele.sex == 0;

    },{

    name : "hh"

    })

    console.log(newArr);

    map方法  映射

    map返回一个新的数组

    var  newArr = person.map(function(ele,index,self){

      console.log(ele,index,self,this)

      return 10;

      return ele.name + 10;

      ele.name += 10;

      return ele

      },{

      name : "hh"

       })

         console.log(newArr);

    自定义封装数组方法:

    Array.prototype.myMap = function(fun){

    var _arr = this;

    var len = _arr.length;

    var param2 = arguments[1] || window;

    var newArr = [];

    for(var i = 0;i < len;i++){

    newArr.push( fun.apply(param2,[_arr[i],i,_arr]) ); //深克隆加进去

    }

    return newArr;

    }

    var newArr = personArr.myMap(function(ele,index,self){

    ele.name += 10;

    return ele

    },{

    name : "hh"

    })

    console.log(newArr)

    every方法 :

    返回一个boolean

    var flag = personArr.every(function(ele,index,self){

    console.log(ele,index,self,this);

     return false;

    return ele.age > 15;

     }, {

     name : "psh"

    })

     console.log(flag)

    自定义封装数组方法:

    Array.prototype.myEvery = function(fun){

    var _arr = this;

    var len = _arr.length;

    var param2 = arguments[1] || window;

    var flag = true;

    for(var i = 0;i < len;i++){

    if(!fun.apply(param2,[_arr[i],i,_arr])){

    flag = false;

    break;

    }

    }

    return flag;

    }

    var flag = personArr.myEvery(function(ele,index,self){

    console.log(ele,index,self,this);

    return ele.age > 10;

    }, {

    name : "psh"

    })

    console.log(flag)

        

  • 相关阅读:
    .NET分页存储过程代码及使用
    优盘内文件夹大小为几十GB,文件夹内全是乱码而且无法删除的最佳解决办法
    [原创]对于“优盘变成了RAW的文件系统,双击提示需要格式化,右键查看属性是0字节,也无法打开”的解决办法
    [转载]Ubuntu下vi编辑器方向键变成字母的解决方法
    [转载]普通人的编辑利器——Vim
    [转载]“不能打开暂存盘文件,因为该文件已锁定”解决办法
    [转载]“10倍效率”程序员/开发人员的习惯
    关于一道.NET程序员面试题的遐想
    “未能从程序集“Microsoft.VisualStudio.DataDesign.SyncDesigner.DslPackage, Version=9.0.0.0, Culture=neutral...”的解决办法
    初学正则表达式之不可忽视的空白符
  • 原文地址:https://www.cnblogs.com/hyh888/p/11820592.html
Copyright © 2020-2023  润新知