• 2019.1.3JavaScript


    数组:

    创建数组:

    =====================1.数组直接量(字面量)形式创建数组=================

    var arr=[ ];//空数组

    var arr=[1,2,3,4 ];

    var arr2=[1,2.3,true,false,null,undefined,[1,2,3],{x:1,y:2}];  //可以放对象,数组,数字,字符串等

    var x=1;
    var arr3=[x,x*3,x+2,x+3];
    console.log(arr3); //[1,3,3,4]    //也可以在里面运算

    var arr4=[1,,3];//[1,undefined,3]    
    console.log(arr4[1]);      //具体打印某个数组的元素就是undefined

    console.log(arr4.length);    //空的数组元素在中间,长度也算
    var arr5=[,,];
    document.write(arr5.length);    //最后一个数组元素长度不算

    ===========================2.通过构造函数Array()创建数组=====================

    这时,我们使用关键词new来创建数组对象

    var a=new Array();//[]    //创建数组,数组长度由内容决定
    var a=new Array(5);      //括号里的证书控制数组的数量
    console.log(a.length);
    var a=new Array(1,2,'king',false,2.3,null);//[1,2,'king',false,2.3,null]
    console.log(a);        //输出数组里的所有内容,用逗号隔开

    var arr=[1,2,3,4];
    console.log(arr[0]);//1
    console.log(arr[3]);
    arr[0]='king';          //改变数组元素原有的元素
    console.log(arr);
    arr[5]='hello nana';        //增加数组的元素,中间空下的则是,undefined
    console.log(arr);

    arr[arr[x]]=333;          //改变数组之前的元素
    console.log(arr);  

    var arr=new Array(10);
    arr=[];
    arr[100]='abc';
    console.log(arr.length);

    var arr=[1,2,3,4,5,6,7,8];
    arr.length=3;
    console.log(arr);                //改变数组长度,使它的长度为3

    arr.length=0;
    console.log(arr);                //改变长度,使它的长度为0

    arr.length=5;
    console.log(arr);                //上面长度已经为0,所以现在里面则是空的   输出[empty × 5]

    var arr=[1,2,3];
    Object.defineProperty(arr,'length',{        //定义性质,使它的长度不能书写,禁止转换它的性质
    writable:false
    });
    console.log(arr.length);              //重新定义的长度则无效
    arr.length=10;
    console.log(arr.length);

            

    var x=2;
    console.log(arr[x]);      //将X带进去,输出的则是数组第三个元素的内容

    =====================对象==================

    var obj={x:"2",y:"4"};
    obj["u"]='a';
    obj[1]='b';
    console.log(obj);            //输出{1: "b", x: "2", y: "4", u: "a"}
    console.log(obj.length);      //对象没有length属性

    =================================================

    var arr=[];
    arr[0]='a';
    arr[1]='b';
    arr[-123]='c';
    arr[2.3]='d';
    arr[null]='e';
    arr[false]='f';
    arr[undefined]='g';
    arr['name']='h';
    arr[4]="pp";
    console.log(arr);        //输出["a", "b", 4: "pp", -123: "c", 2.3: "d", null: "e", false: "f", undefined: "g", …]  

    console.log(arr.length);      //是数组元素的0~4,总共长是5

    =================================添加删除=========================

    var arr=[];
    arr[0]='a';
    arr[1]='b';

    arr.unshift(1,2,3,4,5);                //开头添加
    console.log(arr);
    //arr.shift();                     //开头删除
    //console.log(arr);

    arr.push('d','e','f',12,34);             //尾部添加
    //var res=arr.pop();                //尾部删除  
    //console.log(res);                 //输出删除的数组元素
    console.log(arr);

    var arr=['a','b','c','d'];
    delete arr[0];          //delete删除       //被删除的数组元素是第一个,但是位置保留
    console.log(arr);         //输出为[empty, "b", "c", "d"]  第一个位置空
    console.log(arr.length);       //长度也还是4

    ============================for循环输出,for....in循环,forEach直接循环,.map循环===========================

    var arr=['a','b','c','d','e'];
    for(var i=0,len=arr.length;i<len;i++){      //声明变量len赋值arr.length(长度),让它循环
    console.log(arr[i]);              //输出的结果为a  b   c  d   e

    }

    var arr1=[ ];
    arr1[12]='x';
    arr1[23]='y';
    arr1[55]='z';
    for(var i in arr1){              //for...in声明来循环输出数组中的元素
    console.log(arr1[i])              //输出结果为x   y   z

    }

    for(var i in arr1){
    if(arr.hasOwnProperty(i)){          //如果他有自己的性质
    console.log(arr1[i]);              //结果输出为布尔类型:true
    }
    }

    var arr2=[1,2,3,4,5,6];
    arr2.forEach(function(x){          //用forEach直接循环数组的元素
    console.log(x);
    });

    var arr=[1,2,3,4,5,6];
    res=arr.map(function(x){           //用.map直接循环输出
    return x*x;
    });

    function Test(element,index,array){        //element元素  index指标/索引  array数组
    console.log('要处理的数组为:'+array);       //输出的数组
    console.log('索引:'+index+"--值为:"+element);    //索引,相当于下标  element输出的元素
    }                          
    arr2.forEach(Test);     

    结果为:             

    要处理的数组为:1,2,3,4,5,6
    索引:0--值为:1
    要处理的数组为:1,2,3,4,5,6
    索引:1--值为:2
     要处理的数组为:1,2,3,4,5,6
     索引:2--值为:3
     要处理的数组为:1,2,3,4,5,6
    索引:3--值为:4
     要处理的数组为:1,2,3,4,5,6
    索引:4--值为:5
    要处理的数组为:1,2,3,4,5,6
    索引:5--值为:6

    ===============================数组中的常用方法==========================

    var arr=['a','b','c','d'];      //输出结果为a,b,c,d默认逗号隔开
    var res=arr.join();      //join 加入
    res=arr.join(',');        //可以用join('')里加内容来更改
    res=arr.join('');
    console.log(res);

    res=arr.reverse();        //reverse反/倒   使输出的结果倒着输出
    console.log(res);          //输出结果为["d", "c", "b", "a"]

    var arr=['a','b','c','A','B','C'];
    arr.sort();              //.sort排序  字符串按ASCLL码排序
    console.log(arr);          //结果为["A", "B", "C", "a", "b", "c"]

    var arr=[1,2,11,20,3,15];
    arr.sort();              //.sort排序  数字排序  先看第一位的数值大小,然后看第二位
    console.log(arr);            //输出结果为[1, 11, 15, 2, 20, 3]

    arr.sort(function(a,b){          //.sort排序  数字排序
    return a-b;                //数值大的放在后面
    });

    console.log(arr);            //输出结果为[1, 2, 3, 11, 15, 20]

    arr.sort(function(a,b){          
    return b-a;              //数值大的放在前面
    });

    console.log(arr);            //输出结果为[20, 15, 11, 3, 2, 1]

    var users=[                
    {name:'king',age:12},            //数组里面创建多个对象一个name,age  内容和数组一样用逗号隔开
    {name:'queen',age:32},
    {name:'zhangsan',age:54},
    {name:'rose',age:66},
    ];
    users.sort(function(a,b){            //.sort排序  先看首字母,首字母相同看第二个字母
    if(a.name>b.name)return 1;           
    if(a.name<b.name)return -1;
    return 0;
    });
    console.log(users); 

    // 0: {name: "king", age: 12}

      1: {name: "queen", age: 32}

      2: {name: "rose", age: 66}

      3: {name: "zhangsan", age: 54}


    for(var i in users){                  //只对name来排序
    console.log(users[i]['name']);            //也可以写成console.log(users[i].name);  直接找
    }                        //输出结果为   king      queen     rose      zhangsan

    concat() 方法用于连接两个或多个数组。

    该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

    var arr=[1,2,3];
    res=arr.concat(4,5,6);            //arr连接还是原来的,不变
    res=arr.concat([4,5,6]);
    res=arr.concat([4,5,6],[7,8,9]);
    res=arr.concat([11,[12,[33]]]);
    console.log(res);            //输出结果为[1, 2, 3, 11, Array(2)( [12,[33]]  )]

    var arr=['a','b','c','d','e','f','g','h'];         //左到右是正数,右到左为负数
    res=arr.slice(0,3);            //slice 分割/截取    0 下标  3 到3不算3
    res=arr.slice(2,-3);
    res=arr.slice(4);
    res=arr.slice(-5,-2);
    console.log(res);

    var arr=['a','b','c','d','e','f','g','h'];  
    res=arr.splice(0,1);//['a'];          //splice删除元素    0 下标  1  到1 不包括1
    res=arr.splice(5);
    res=arr.splice(0,2,'!','?','%');          //删除a,b  并添加!,?,%元素,在最前
    console.log(res);
    console.log(arr);

    function Trans(x){              //Trans进入/横穿
    return x.replace(/!/g,'?').toUpperCase();      //replace替换  找到!全局标志 g,换成?   并且给它的字母换成大写
    }
    console.log(res);

    var arr=[1,3,4,5,5,623,4,345,4367,null,undefined,false,true,''];
    res=arr.filter(function(x){                        //filter过滤  return 返回
    return x<=10;                      //小于等于十过滤出来
    });
    res=arr.filter(function(x){
    return x%2==0;                      //余数为0
    });
    res=arr.filter(function(x){                     不是undefined与null
    return x!==undefined && x!=null;
    });
    console.log(res);                //输出[1, 3, 4, 5, 5, 623, 4, 345, 4367, false, true, ""]

    var arr=[1,2,3,4,5];
    res=arr.reduce(function(a,b){          //reduce求和  数组里的元素相加
    return a+b;
    });
    res=arr.reduce(function(a,b){      
    return a+b;                     //数组里的元素相加  再加上10
    },10);
    console.log(res);

    var age=[12,34,55,66,28,19];              //输出结果为布尔类型
    res=age.every(function(x){              //every每一个  每一个数组必须满足
    return x>=18;
    });
    res=age.some(function(x){              //some一些    其中一个数组满足就行
    return x>=19;
    });
    console.log(res);                //输出结果为false  true

    var arr=['a','b','c','d','e','a','bv','a'];
    res=arr.indexOf('a');//0            //indexOf  查找下标
    res=arr.indexOf('A');//-1
    res=arr.indexOf('a',2);            //“a”,2  查找第几个元素
    res=arr.lastIndexOf('a');            //lastIndexOf  查找最后一个下标
    console.log(res);              //7

    console.log(Array.isArray(arr));          //判断它是不是一个数组  是一个数组  结果为布尔类型   true
    console.log(Array.isArray([]));            //是一个数组  结果为布尔类型   true
    console.log(Array.isArray({}));            //是一个对象  结果为布尔类型   false

    var arr=['a','b','c','d','e','a','bv','a'];
    console.log(arr.toString());            //把里面的数组元素连接成一个字符串,里面用逗号隔开,逗号不能更改
    console.log(arr.join());               //把里面的数组元素连接成一个字符串,里面用逗号隔开,逗号可以更改

  • 相关阅读:
    ResNet & DenseNet
    82. 删除排序链表中的重复元素 II
    C++ Primer 笔记——多重继承与虚继承
    C++ Primer 笔记——命名空间
    C++ Primer 笔记——异常处理
    C++ Primer 笔记——模板与泛型编程
    C++ Primer 笔记——转发
    C++ Primer 笔记——理解std::move
    C++ Primer 笔记——OOP
    C++ Primer 笔记——重载运算
  • 原文地址:https://www.cnblogs.com/liuwei1/p/10216841.html
Copyright © 2020-2023  润新知