javascript系列之数组

javascript系列之数组

数组方法

  • Array.push():在数组末尾增加一个或多个元素

  • Array.pop():在数组末尾删除一个元素

  • Array.unshift():在数组头部增加一个或多个元素。<参数一次性插入>
  • Array.shift():在数组头部删除一个元素

  • Array.join():将数组所有元素都转化为字符串并连接在一起。[1,2,3].join(‘-‘)=>1-2-3

  • String.split():join()的逆运算,将字符串分割成若干块来创建一个数组。”1,2,3”.split(‘,’)=>[ ‘1’,’2’,’3’]

  • Array.reverse():将数组中的元素颠倒顺序,返回逆序数组。[1,2,3].reverse()=>[3,2,1]

  • Array.sort():排序,默认按字母表排序。

    var arr=[33,4,1111,222];
    arr.sort(function(a,b){return a-b;}); //升序排列 =>[4,33,222,1111]
  • Array.concat:连接两个数组,不改变原始数组。[1,2,3].concat([4,5,6])=>[1,2,3,4,5,6]

  • Array.slice():截取数组片段,两个参数,分别是数组的开始和结束位置。

    var arr = [1,2,3,4,5];
    arr.slice(3) // =>[4,5]
    arr.slice(0,3) // =>[1,2,3]
  • Array.splice():在数组中插入或删除元素的通用方法。会改变调用的数组。

    var arr = [1,2,3,4,5];
    //删除
    arr.splice(2); //返回[3,4,5]; arr变为[1,2]
    arr.splice(1,1); //返回[2]; arr变为[1]
    //插入
    var arr = [1,2,3,4,5];
    arr.splice(2,0,'a','b'); //返回[]; a变为[1,2,'a','b',3,4,5]
    arr.splice(2,2,[1,2],3); //返回['a''b']; a变为[1,2,[1,2,],3,3,4,5]
  • Array.toString()和Array.toLocaleString():将每个元素转化为字符串,输出用逗号分隔得字符串列表,等同join();

    • 一般使用toString
    • 当数字是四位数及以上时,有区别,推荐使用localstring
    • 当目标是标准时间格式时,两种方法是有区别的,推荐使用localstring。

    • 数组遍历

  • for:命令式风格

    for(var i=0,len=arr.length;i<len;i++) //推荐写法
    if(!arr[i]) continue ; //跳过null,undefined,false,0,'',和不存在元素
    if(arr[i]===undefined) continue; //跳过undefined和不存在元素
    if(!(i in arr)) continue; //跳过不存在元素
  • forEach():函数式风格,三个参数;数组元素、元素索引、数组本身。

    • 无法在所有元素都传递给调用的函数之前终止遍历
    var data = [1,2,3];
    var sum = 0;
    data.forEach(function(x){sum+=x}) //sum=>6
    data.forEach(function(v,i,a){ a[i] = v + 1;}); //data=>[2,3,4]
  • map():调用方式和forEach一样,但传递给map()的函数应该有返回值。

    arr.map(function(x){return x});
  • filter():过滤器,返回元素是调用数组的一个子集,,与正则搭配更强大
    arr.filter(function(x){return x !== undefined && x!=null; });
  • every()和some():调用方式和filter一样,返回true或false,

  • reduce和reduceRigth():使用指定的函数将数组元素进行组合,生成单个值。

    • 两个参数:第一个是执行化简操作的函数,第二个(可选)是传递给函数的初始值
      //数值计算(数组)
      var arr=[1,2,3,4,5]
      var sum = arr.reduce(function(x,y){ return x+y},0) //数组求和
      var product = arr.reduce(function(x,y){ return xx*y},1); //数组求积
      var max = arr.reduce(function(x,y){ return (x>y)?x:y;}); //求最大值
      //对象
      var objects = [{x:1},{y:2},{z:3}];
      var merged = objects.reduce(union); //union是有两个参数的函数
  • indexOf()和lastIndexOf():返回该值在数组中的索引,没有返回-1;

  • Array.isArray([]):检测是否为数组

    • 类数组
  • 可以通过Function.call方法在对象和字符串调用部分数组方法

    Array.prototype.join.call(string,' ')
    Array.prototype.slice.call(string,0)

以上知识点来自《JavaScript权威指南》第六版第七章

猜你喜欢

转载自blog.csdn.net/qq_34134278/article/details/78981723
今日推荐