es6数组总结

  • 数组
    • 定义

      • 数组是值得有序集合,每个值叫做元素,每个元素有个固定的位置,叫做索引
      • 数组继承自Array.prototype中的属性,数组的方法
    • 创建数组

      • var a = new Array(10) 限制长度10
      • 数组是特定的对象, 索引类似特殊的属性名
      • 查找的时候不存在就是undefine 类似对象
      • 数组是对象,就可以在原型中找元素
    • 数组元素的读和写

    • 稀疏数组 length属性长度大于元素的个数

      • js中很少稀疏数组,和平常数组一样对待,只是会多几个undefine
    • 数组长度

      • 每个数组都有一个length属性
      • 数组的length属性值设置为大于当前的长度,实际不会向数组中添加新的元素,只是在数组末尾创建一个空的区域
    • 数组元素的添加和删除

      • 添加
      • 删除 delete 不会修改数组的length属性
    • 数组的遍历(for)

      • for

         ```js
             var keys = Object.key(o) //获取o对象属性名组成的数组
             var values = [];
             for(var i=0;i<keys.length;i++){
                 var key =keys[i];   //获得索引处的键值
               values[i] = o[key] //在values数组中保存属性值
             }
         
         ```       
        
      • for in

           for(var i in a) {
             if(!a.hasOwnProperty(i) continue)  //跳过继承的属性
           }
        
      • forEach

        ```js
            var data =[1,2,3,4,5]   //这是需要遍历的数组
            var sumSq = 0           //要得到数据的平方和
            data.forEach(function(x)){
                sumSq +=x*x        //平法相加
            }
            sumSq                   //55:1+4+9+16+25
            
        ```
        
    • 多维数组

      • js不支持多维数组,可以用数组的数组来近视
           //表格有10行
           var table = new Array(10);   
           for(var i = 0;i<table.length;i++)
                  table[i] = new Array(10) //每行有10列
           //初始化数组
           for (var row = 0;row<table.length;row++){
                for(var col=0; col<table[row].lenth;col++){
                    table[row][col] = row*col
                }
           }
           //使用多维的数来计算 (查询)  5*7
           var product = table[5][7]   //35
        
    • 数组的方法

      • join() 将数组中的所有元素转化成字符串并连接在一起

        • Array.join()是String.split()方法的逆向操作,后者是将字符串分成若干块来创建一个数组
            var a = [1,2,3];
            a.join();    //"1,2,3"
            a.join(' ');   //"1 2 3"
            var b = new Array(10)
            b.join('-')    //'---------' 9个连子号组成的字符串
        
      • reverse() 数组中的元素跌倒顺序,返回逆序的数组

            var a = [1,2,3]
            a.reverse()     //a数组变成[3,2,1]
        
        
      • sort() 将数组中的元素排序并返回排序后的数组
        -数组包含undefine元素,它们会被排放到数组的尾部

            var a = new Array('banner','cherry','apple')
            a.sort();   //字母排序
            var s = a.join(',')     //s ='apple,banner,cherry'
        
        
        • 其他方式,非字母排序,里面可以传一个比较函数
            var a = [33,4,111,2222]
            a.sort();   // 字母表顺序 111,2222,33,4
            a.sort(function(a,b){  //从小到大   负数 0 正数
                return a-b
            })
            a.sort(function(a,b){
                return b-a      //从大到小
            })
        
        //区分大小写
        a = ['aut','Bug','cat','Dog']
        a.sort()    //区分大小写  ['Bug','Dog','aut','cat']
        //不去分大小写
        a.sort(function(s,t){
            var a = s.toLowercase();
            var b = t.toLowerCase();
            if(a<b) return -1;
            if(a>b) return 1;
            return 0;
        })  //=>['aut','Bug','cat','DOg']
        
        
      • concat() 创建并返回一个新的数组,它的元素包括调用的concat()的原始数组的元素和concat的每个参数

        var a = [1,2,3]
        a.concat(4,5)   //返回[1,2,3,4,5]
        a.concat([4,5]) //返回[1,2,3,4,5]
        a.concat([4,5],[6,7])   //返回[1,2,3,4,5,6,7]
        a.concat(4,[5,[6,7]])   //返回[1,2,3,4,5,[6,7]
        
        
      • slice(start,end) 方法返回指定数组的一个片段或者子数组.不包含end位置的元素,不会改变原来的数组

        • 只有一个参数,参数位置开始到改数组结束
        • -1指定了最后一个元素 -3指定倒数第三个元素
      • splice(位置,个数,插入的元素一,插入的元素二,) 数组中插入和删除元素的通用方法 改变原来的数组 返回的是一个删除后的新数组

        • 删除
        var a = [1,2,3,4,5,6,7,8]
        a.splice(4);    //返回[5,6,7,8]  第二个参数省略 表示到结尾
        a.splice(1,2)   //返回[2,3]    a是[1,4]
        a.splice(1,1)   //返回[4]    删除指定的元素
        
        
        • 添加 前两个参数指定删除数组元素.后面指点插入的元素,第一个参数指定的位置开始插入
        var a = [1,2,3,4,5]
        a.splice(2,0,'a','b')  //返回[]  a是[1,2,'a','b',3,4,5]
        a.splice(2,2,[1,2],3)  //返回['a','b']  a是[1,2,[1,2],3,3,4,5]
        
        
      • push()和pop() push末尾添加 pop末尾删除

      • unshift()和shift() unshift首位置添加 shift首位置删除

      • toString() 将每个元素转化为字符串 并且用逗号分隔

        [1,2,3].toString()   //'1,2,3'
        ["a","b","c"].toString()    //'a,b,c'
        [1,[2,'c']].toString()      //'1,2,c'
        
      • toLocaleString() 是toString()的本地化版本,调用该方法将每个数组元素转化为字符串,并且使用本地化的分隔符连接起来

    • ECMAScript5方法

      • 概要: 参数:函数(数组元素,数组索引,数组本身)

      • forEach() 从头到尾遍历数组,每个元素指定调用的函数

        var data = [1,2,3,4,5]  //要求和的数组
        var sum = 0 //计算数组和的值
        data.forEach(function(value){
           sum+=value  //将每个值累加到sum上
        })
        sum //15
        
        var data = [1,2,3,4,5]  //要求和的数组
        //每个元素加一
        data.forEach(function(v,i,a){
            a[i]=v+i
        })
        data    //[2,3,4,5,6]
        
        • forEach 无法在所有元素遍历完终止无法使用break中只可以放到一个try快中,抛出异常,若forEach() 调用 的函数抛出forEach.break异常,循环会提前终止

           function forEach(a,f,t){
              try {a.forEach(f,t);}   //尝试执行的代码块
              catch(e){
                  if(e===foreach.break)  return;  //捕获错误的代码块
                  else throw e;   //
              }
          }
          foreach.break = new Error('StopIteration')
          
          
        • map() 将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值

          • map返回的是一个新数组,不修改调用的数组
               a = [1,2,3]
               b = a.map(function(x){retrun x*x})  //b是[1,4,9] a是[1,2,3]
          
        • filter() 返回的数组元素是调用的数组的一个子元素.传递的函数用来逻辑判断.

              a = [5,4,3,2,1]
              smallvalue = a.filter(function(x){return x<3})  //[2,1]
              everyother = a.filter(function(x,i){return i%2==0})   //索引和2取余0 [5,3,1]
          
        • every() 当且仅当针对数组中的所有元素调用判定函数都返回true,他它才返回true

              a = [1,2,3,4]
              a.every(function(x){return x<10})   //true 所有的值<10
              a.every(function(x){return x%2==0}) //false 不是所有的值都是偶数
              
          
        • some() 数组中至少有一个元素调用判定返回true,它就返回true

              a =[1,2,3,4]
              a.some(function(x){return x%2===0}) //true a含有偶数值
              a.some(isNaN)   //false:a不包含非数值元素
          
        • reduce() 使用指定的函数将数组元素进行组合,生成单个值

          • 第二参数,初始化该数组,并参数第一次运算,下面的例可以省略
              var a = [1,2,3,4,5]
              var sum = a.reduce(function(x,y){retrun x+y},0)  //数组求和
              var pro = a.reduce(function(x,y){retrun x*y},1)  //数组求积
          
          
          
        • reduceRight() 参考上面,只是从右面开始处理数组

        • indexof() 搜索整个数组中具有给定指定的元素,返回找到第一个元素的索引或者没有找到返回-1

          • 参数一:要查找的元素
          • 参数二:从哪个位置开始查找
              //在数组中查找所有出现的x,并且返回一个包含匹配索引的数组
              function findall (a,x){
                  var res = []    //将会返回的数组
                  len = a.length  //待搜索数组的长度
                  pos = 0     //开始搜索的位置
                  while(pos<len){ //循环搜索多个元素
                      pos = a.indexof(x,pos); //搜索
                      if(pos ===-1) break;    //未找到完成搜索
                      result.push(pos);   //否则 在数组中存储索引
                      pos++   //并从下一个索引开始索引
                      
                      
                  }
                  return res  //返回包含索引的数组
              }
          
          
          
        • lastIndexof() 从数组的右面开始查找 和indexof用法一样

    • 数组的类型

      • 判断是否是数组的方法:Object.prototype.toString()

      • 类数组对象

      • 作为数组的字符串

      • 注意 字符串是不可以变的值,把他们当字符串看待的时候,它们是只读的
        ```js

              s = 'javascript'
              Array.prototype.join.call(s,'') //j a v a S c r i p t
              
          ```
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值