zoukankan      html  css  js  c++  java
  • JavaScript笔记6-数组新方法

    七.ECMAScript5关于数组的新方法
    1.forEach():遍历数组,并为每个元素调用传入的函数;
         举例:
       

      1  var a = [1,2,3];
      2      var sum = 0;
      3      //传一个参数
      4     a.forEach(function(v){
      5          sum += v;
      6      });
      7      console.log(sum);//6
      8      //传三个参数(元素值,索引,数组本身)
      9      a.forEach(function(v,i,a){
     10          a[i]=v+1;//为数组的各元素自加1
     11      })
     12      console.log(a);//[2,3,4]

    2.map():将调用该函数的数组的每个元素都传入指定函数,并返回运算后的新数组;
    注意:该函数不修改原数组.
    举例:

      1 var a = [1,2,3];
      2 var b = a.map(function(x){
      3      return x*x;
      4  })
      5  console.log(b);//[1,4,9]


    3.filter():将调用该函数的数组的每个元素传入指定函数进行判定,若判定为true,则返回.最终返回一个符合指定条件(函数)的元素的集合(该集合为原数组的子集)
    注:该函数会跳过稀疏数组中缺少的元素,总是返回稠密数组,利用此特性可以压缩稀疏数组.
         举例1:
       

      1  var a = [1,2,3];
      2      var c = a.filter(function(x){
      3          return x<3;
      4      })
      5      console.log(c);

         举例2:
       
      1  var a = [ ,1,null,3,4, ,];
      2      console.log(a.length);//6
      3      var dense = a.filter(function(){
      4          return true;//过滤掉undefined
      5      });
      6      console.log(dense);//[1,null,3,4]
      7      console.log(a);//Array(6) […, 1, null, 3, 4]未改变原有数组
      8     var c = a.filter(function(x){
      9      return x!=undefined && x != null;
     10      });
     11      console.log(c);//Array(3) [1, 3, 4]

    4.every():遍历调用该方法数组的每个元素,判定是否符合指定条件(函数),全部符合则返回true;注意空数组调用时返回true;
    some():遍历调用该方法数组的每个元素,判定是否符合指定条件(函数),只要有一个符合则返回true;注意空数组调用时返回false;
         举例1:
       

      1  var a = [1,2,3,4,5];
      2      var b = a.every(function(x){
      3         return x >0;//判定是否所有元素均大于0
      4      });
      5      console.log(b);//true
      6      var c = a.some(function(x){
      7          return x < 4; //判定是否有元素小于4
      8      });
      9      console.log(c);//true

         举例2:空数组调用
        
      1 var d = [];
      2      console.log(d.every(function(x){
      3          return x;
      4      }));//true
      5      console.log(d.some(function(x){
      6          return x;
      7      }));//false

    5.reduce()和reduceRight()
    使用指定的函数对数组元素进行组合,生成单个值.指定函数需要两个值(第一个是执行化简操作的函数;第二个(可选)是传递给函数的初始值)
    注意:1)无第二个参数时,函数会调用数组的第一个元素作为初始值,若数组为空数组则报"类型错误"异常;
    2)若数组只有一个元素,并且未提供第二个参数,则不会调用函数,只是返回该唯一元素;
    举例1:

      1 var a = [1,2,3,4,5];
      2  //求和
      3 var sum = a.reduce(function(x,y){
      4      return x+y;
      5  },0);
      6  console.log(sum);//15
      7  //求积
      8 var mul = a.reduce(function(x,y){
      9      return x*y;
     10  },1)
     11  console.log(mul);//120
     12  //求最大值
     13 var max = a.reduce(function(x,y){
     14      return x>y?x:y;
     15  },0)
     16  console.log(max);//5

    举例2:幂运算
      1 var a = [2,3];
      2 var big = a.reduceRight(function(x,y){
      3      return Math.pow(y,x);
      4  });
      5  console.log(big);//2^3=8
      6 
      7 var big1 = a.reduceRight(function(x,y){
      8      return Math.pow(x,y);
      9  });
     10  console.log(big1);//3^2=9
     11 


    6.indexOf()和lastIndexOf()
    返回给定索引值的元素,lastIndexOf()从右往左搜索;若没有找到,则返回-1;
    注意:该函数可接收两个参数,第一个参数为需要搜索的索引;第二个为开始搜索的位置(可选);两个参数都不为函数;
    举例:定义一个函数,查找数组中所有出现的x,并返回包含所有索引的数组

      1 function findall(a,x){
      2      var results = [];    //定义空数组,用来接收x的索引值
      3     len = a.length;    //搜索的最大长度
      4     pos = 0;    //开始搜索的位置
      5     while(pos<len){
      6          pos = a.indexOf(x,pos); //从pos开始搜索x
      7          if(pos === -1){
      8              break;    //找不到就返回
      9         }
     10          results.push(pos);//存储索引值
     11         pos = pos+1;
     12      }
     13      return results;
     14  }
     15 测试
     16 var a = [1,2,3,2,4];
     17  console.log(findall(a,2));//Array(2) [1, 3]

    八.判定是否为数组
    Array.isArray():判定是否为数组类型,是则返回true;

    九.字符串可以作为只读的数组
    可以使用方括号([])访问单个字符;
    也可以作用charAt()方法
    举例:

      1 var s = test;
      2  s.charAt(0);//"t"
      3  s[0];//"t"

    十:需求:将完全由数字组成的字符串转为数字类型,如"1345"转为1345
    法一:

      1 'use strict';
      2  function string2int(s){
      3      //将s转为字符串数组
      4     var str = s.split('');
      5      //调用map()将字符串数组转为数字数组
      6     var arr = str.map(function(x){
      7          //字符-0即可变为数字
      8         return x-0;
      9      })
     10      //调用reduce(),将数字数组转为int类型
     11     var res = arr.reduce(function(x,y){
     12         return x*10+y;
     13      })
     14      //返回结果
     15     return res;
     16  }

    法二:
      1 'use strict';
      2 var b = "1345";
      3  //split():将字符串转为字符类型的数组
      4 var c = b.split('');
      5  //与0做减法运算,将字符类型转为数字类型
      6 var d = [];
      7  for(var i= 0;i<c.length;i++){
      8      d[i]=c[i]-0;
      9  }
     10  //转为整型
     11 var e = d.reduce(function(x,y){
     12      return x*10+y;
     13  })
     14  console.log(e);

  • 相关阅读:
    jmeter的断言
    Fiddler(五)设置显式IP地址
    学习pycharm----自动化接口
    fidder重复创建数据+模拟接口响应数据+fidder接口测试
    python网络/并发编程部分简单整理
    python面向对象部分简单整理
    python模块与包简单整理
    python函数部分整理
    Python基础部分整理
    Scheme Implementations对比
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7215086.html
Copyright © 2011-2022 走看看