zoukankan      html  css  js  c++  java
  • js数组

    一、定义

      数组是一组连续的变量组成的集合--统一起一个名字 批量管理多个数据(js的存储都是数组)

    二、创建  

     1 //创建的四种方式
     2 //1 创建一个空数组对象
     3 var arr1=[];
     4 
     5 //2 创建数组的同时,维数指定初始元素
     6 var arr2=[1,2,3,4,5];
     7 
     8 //3 用new关键字创建一个数组类型对象,并返回新对象的地址
     9 var arr3=new Array();
    10 
    11 //4 创建n个元素的数组空数组;创建带初始元素的数组
    12 var arr4=new Array(4);//创建四个元素的空数组
    13 var arr5=new Array(1,2,3,4,5);
    14 
    15 /*
    16     js数组下标越界不会出错
    17     为不存在的位置赋值:不会出错,会自动创建指定下标的新元素
    18     从不存在的位置取值:不会报错,也不会增加新元素,而是返回undefined
    19     所有没有赋值的变量的默认值为(自动赋值)undefined;
    20     主动释放一个变量引用的对象使用null;
    21     当使用完一个较大的对象时,主动释放对象是好的习惯;
    22 */

    三、数组的复制与取值

    1 //数组赋值 数组变量[i]=新值;
    2 arr2[2]=99;
    3 
    4 //数组取值 数组变量[i];
    5 var i=arr2[0];

    四、length属性

     1 /*获取数组中的元素个数(不等于实际的元素个数)
     2  示例:
     3     arr[arr.length-1];获得任意长度数组中的最后一个元素
     4     arr[arr.length]=Value; 向数组末尾追加一个新元素
     5     改小length的值,可以删除末尾元素
     6 */
     7 var att=[1,2,3,4,5];
     8 console.log(att.length);//5
     9 att[100]=100;
    10 console.log(att.length);//101
    11 console.log(att);//[1, 2, 3, 4, 5, 100: 100]

    length属性大多用于索引数组的遍历

    五、关联数组

      定义:可以自定义下标的数组(索引数组:自动生成下标的数组都是索引数组)

     1 /*示例*/
     2 var fbb=[];
     3 fbb["sname"]="范冰冰";
     4 fbb["shx"]=91;
     5 fbb["yuw"]=65;
     6 fbb["eng"]=95;
     7 console.log(fbb);//[sname: "范冰冰", shx: 91, yuw: 65, eng: 95]
     8 /*
     9 关联数组中的length属性失效
    10 关联(hash)数组:下标不能重复;优点:利用Hash算法,精确定位某个下标的位置,不用遍历
    11 索引数组:缺点:小标自动分配无意义,想要内容查找元素,只能从头开始遍历
    12 */
    13 
    14 /*关联数组遍历*/
    15 for(var key in fbb){
    16         console.log(key+" : "+fbb[key]);
    17     }//sname : 范冰冰  shx : 91  yuw : 65  eng : 95

    六、数组API

      1.数组输出toString(2种):

     1 /*var str=arr.toString();-->输出数组中的内容,每个元素用逗号分隔,自动调用
     2    var str=arr.join(“”);-->输出数组中的内容,自定义元素间连接符
     3 */
     4 var arr=[1,2,3,4,5];
     5 console.log(arr);//[1, 2, 3, 4, 5] 默认toString()方法
     6 console.log(arr.join("-"));//1-2-3-4-5 自定义连接符
     7 
     8 /*join的两种固定使用方式
     9 1.将字符组成单词:arr.join("");
    10 2.将单词组成句子:arr.join(" ");
    11 */
    12 var arrChar=["H","e","l","l","o"];
    13 console.log(arrChar.join(""));//Hello
    14 var arrWord=["My","name","is","Medeor","."];
    15 console.log(arrWord.join(" "));//My name is Medeor .

      2.拼接concat和截取slice

    1 /*concat示例 ar newArr.concat(另一个数组,值1,值2,...);*/
    2 var arr=[1,2,3,4,5];
    3 var newArr=arr.concat([6,7,8,9,0]);
    4 console.log(newArr);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    5 
    6 /*slice var subArr=arr.slice(starti,endi+1);//含头不含尾
    7 (API无法直接修改原对象,而返回新对象)*/
    8 var subArr=newArr.slice(3,7);
    9 console.log(subArr);//[4, 5, 6, 7]

      3.splice  删除、插入、替换(直接修改原对象)  

     1 /*1.删除:[var deleted=]srr.splice(strti,删除个数);*/
     2 var arr=[1,2,3,4,5,6,7,8,9,0];
     3 arr.splice(2,3);//从下表为2的元素开始删除3个元素
     4 console.log(arr);//[1, 2, 6, 7, 8, 9, 0]
     5 
     6 /*2.插入:arr.splice(starti,0,新值1,...);*/
     7 arr.splice(2,0,5,4,3);//从下表为2的元素开始删除0个元素 插入5 4 3
     8 console.log(arr);//[1, 2, 5, 4, 3, 6, 7, 8, 9, 0]
     9 
    10 /*3.替换:arr.splice(starti,删除个数,新值1,...);*/
    11 arr.splice(2,3,"a","b","c");//从下表为2的元素开始删除3个元素 插入a b c
    12 console.log(arr);//[1, 2, "a", "b", "c", 6, 7, 8, 9, 0]

      4.arr.reverse();颠倒数组中所有元素(直接修改原对象)

      5.sort() 数组排序

        无参数:如果调用该方法时没有使用参数,(对数组元素进行toString()转成字符串)按照字符编码的顺序进行排序。 

    1 var arr=["b","a","d","z","w","y","i"];    
    2 arr.sort();/*无参数*/
    3 console.log(arr.join(" "));//a b d i w y z
     1 arr=[1,12,4,7,49,100];
     2 arr.sort();
     3 console.log(arr.join(" "));//1 100 12 4 49 7
     4 /*问题:默认将所有元素转为字符串升序排列,数字也是按照字符编码排序
     5     比较器函数:专门比较任意两值大小的函数
     6     特点(2个):
     7             1.2个参数,分别表示要比较的任意两值
     8             2.无论比较逻辑是什么,都要返回一个数字
     9             颠倒比较器结果的正负,可以改升序为降序排列
    10 */
    11 // 定义比较器函数 
    12 function sortNumber(a,b){return a - b}
    13 arr=[1,12,4,7,49,100];
    14 arr.sort(sortNumber);
    15 console.log(arr.join(" "));//1 4 7 12 49 100

      6.push()和pop() 模拟末尾出入栈操作

        js中没有真正的栈和队列的类型,一切都是用数组对象模拟

        栈:只能从一端进数组,另一端封闭 

        队列:从一端进入数组,从另一端出   

        入栈:arr.push(value1,value2,...);
        出栈:var last=arr.pop();

    1 //末尾入栈
    2 var arr=[1,2,3,4,5];
    3 var lh=arr.push(6,7,8,9);
    4 console.log("新数组长度:"+lh+" "+arr);//新数组长度:9 1,2,3,4,5,6,7,8,9
    5 
    6 //末尾出栈
    7 var last=arr.pop();
    8 console.log("数组最后一个元素:"+last+"; Length:"+arr.length);// 数组最后一个元素:9; Length:8
    9 console.log(arr);// [1, 2, 3, 4, 5, 6, 7, 8]

      7.unshift()和shift() 模拟开头出入栈操作

        入栈:arr.unshift()
        出栈:var first=arr.shift()

    1 //开头入栈
    2 var arr=[1,2,3,4,5];
    3 var lh=arr.unshift(6,7,8,9);
    4 console.log(arr+" lh="+lh);//6,7,8,9,1,2,3,4,5 lh=9
    5 
    6 //开头出栈
    7 var first=arr.shift();
    8 console.log("first="+first+" "+arr);//first=6 7,8,9,1,2,3,4,5

      8.push()和shift()模拟结尾如队,开头出对的队列

      9.unshift()和pop()模拟开头入队,结尾出对的队列

    七、二维数组数组

      二维数组:数组中的元素,又引用了另一个子数组对象

      何时使用二维数组(2种):

        1. 只要保存横行竖列的二维数据
        2. 保存上下级关系的数据时

      创建二维数组(2种):

     1 //1. 先创建空数组,再赋值:
     2 var arr=[];
     3 arr[0]=["石家庄","保定","唐山"];
     4 arr[1]=["德州","济南","烟台"];
     5 
     6 //2. 创建数组时,同时初始化子数组:     
     7 var data=[
     8     [0,2,2,4],
     9     [2,4,4,8],
    10     [16,32,16,8],
    11     [4,2,128,4]
    12 ];

      访问二维数组中的数据:arr[行下标][列下标]

        比如:data中第2行,第3个元素

          data[1][2]

       强调:二维数组中,行下标不能越界!

      遍历二维数组:

    1 //固定套路:外层循环遍历行,内存循环遍历列
    2 var arr=[[1,2,3,4],[5,6,7,8],[9,0,11,12]];
    3     for(var r=0;r<arr.length;r++){
    4         for(var c=0;c<arr[r].length;c++){
    5              console.log(arr[r][c]);//输出数组每一个元素
    6         }
    7     }        

    Array

  • 相关阅读:
    队列的顺序存储实现
    栈的顺序存储实现2
    企业版循环单链表
    STL-list
    EXCEL多条件查询之VLOOKUP+IF{1,0} 踩坑
    MybatisPlus Wrapper方法
    sequence:创建、使用
    Java中List集合去除重复数据的方法
    windows下安装nginx和常用命令
    MySQL8.0.20下载并安装
  • 原文地址:https://www.cnblogs.com/Medeor/p/4896333.html
Copyright © 2011-2022 走看看