zoukankan      html  css  js  c++  java
  • 《javascript语言精粹》——第6章数组

    【1】、数组字面量

      var empty=[];
      var num=[
        'zero','one','two','three','four','five','six','seven','eight','nine'
      ];

      document.write("<br/>"+empty[0]);undefined

      document.write("<br/>"+num[0]);//zero

      document.write("<br/>"+num.length+"<br/>"+empty.length);10,0

      var misc=['string',true,[0,1],{object:true},NaN,null,undefined];//数组中可以是任意混合类型的值
      document.write("<br/>"+misc.length);//7

    【2】、长度

      var myArr=[];
      myArr.length;
      document.write("<br/>"+myArr.length);
      myArr[9999]=true;
      document.write("<br/>"+myArr.length);//10000 数组最大整数属性名+1,并不一定等于数组中的属性个数

      num.length=3;
      num[num.length]='shi';
      num.push("go");//添加到数组中
      document.write("<br/>"+num);//zero,one,two,shi,go

    【3】、删除

      delete num[2];
      document.write("<br/>"+num);//zero,one,,shi,go

      num.splice(2,2);//第一个参数是数组中的序号也就是下标,从0开始数,第二个参数就是要删除的元素的个数
      document.write("<br/>"+num);//zero,one,go  ,对于大型的数组,效率不高,因为被删除的属性后面的每个属性都要被溢出,并且以一个新的键值重新插入

    【4】、枚举:就是能够通过for 循环遍历出来

    【5】、混淆的地方

      数组跟对象的使用尝尝会弄混,所以,写了一个判断是否为数组的方法:

      var is_array=function(value){
        return value&&
        typeof value=='object'&&
        typeof value.length=='number'&&
        typeof value.splice=='function'&&
        !(value.propertyIsEnumerable('length')); //length能够通过for in循环遍历出来,对于所有数组来说,返回的都是false
      };

    【6】、方法

      Array.method("reduce",function(f,value){
        var i;
        for(i=0;i<this.length;i++)
        {
          value=f(this[i],value);//value是个临时变量,用来临时保存最后相加的值,然后在跟后面一个值相加
        }
        return value;
      });

      var data=[4,8,15,16,23,42];
      var addNum=function(a,b){
        return a+b;
      };
      var mult=function(a,b){
        return a*b;
      };

      var sum=data.reduce(add,0);

      var product=data.reduce(mult,1);  document.write("<br/>相加:"+sum+"<br/>相乘:"+product);//相加:108 相乘:7418880

      
      data.total=function(){ //数组是对象,所以,可以给一个单独的数组添加方法
        return this.reduce(add,0);
      };

      document.write("<br/>"+data.total());//108

    【7】、维度

      //一维数组
      Array.dim=function(a,b){
        var c=[],i;
        for(i=0;i<a;i++){
          a[i]=b;
        }
      };

      var arr1=Array.dim(10,0);

      //二维数组或者是数组的数组
      var maxrix=[
        [0,1,2],
        [3,4,5],
        [6,7,8]
      ];
      document.write("<br/>"+maxrix[2][2]);//8


      Array.maxrid=function(m,n,inital){
        var a,i,j,mat=[];
        for(i=0;i<m;i++)
        {
          a=[];
          for(j=0;j<n;j++){
            a[j]=0;
          }
          mat[i]=a;
        }
        return mat;
      };

      var myMaxrix=Array.maxrid(4,4,0);
      document.write("<br/>"+myMaxrix[3][3]);//0

      Array.identity=function(n){//恒等矩形
      var i,mat=Array.maxrid(n,n,0);
        for(i=0;i<n;i++){
          mat[i][i]=2;
        }
        return mat;
      };

      document.write("<br/>"+Array.identity(4)[3][3]);//2

      

      

  • 相关阅读:
    Flask、Vue部署总结
    Recat教程(二)
    C第一个程序
    React教程(一)
    Flask+uwsgi+nginx 部署
    使用Dockerfile部署简单的应用
    Typescript搭建开发环境
    Typescript模块化/命名空间/装饰器
    Typescript的泛型/泛型接口
    修改git密码后,终端fatal: Authentication failed for'http://xxx/xxx.git'
  • 原文地址:https://www.cnblogs.com/angelgril/p/3831789.html
Copyright © 2011-2022 走看看