zoukankan      html  css  js  c++  java
  • 数组

    一.数组的概念
            一组数据,数据的组合
        那些数据的组合,只要是数据(数据),就可以放在数组中
     
    数组的意义:
        可以同时操作多个数据
     
    二.数组的创建和使用
        1. 创建:
                字面量:var arr = []
                构造函数:var arr = new Array();
        var arr = [234,"hello"];
        var arr2 = new Array(233,"hello")
        console.log(arr)          // 234  hello
        console.log(arr2)         // 234  hello
        console.log(arr == arr2)    // false 任何两个对象都不相等
                 任何两个对象都不相等
        区别:当只有一个数据,还是数值时,字面量会在数组中保存这个值
    构造函数会将这个数值作为长度
    var arr = [6];
    var arr2 = new Array(6);
    console.log(arr);     //[6]
    console.log(arr2);      // [empty*6]   当new Array(1,2,3)-->[1,2,3]
    console.log(arr.length)   //1
    console.log(arr2.length)   //6
            
      三.数组的操作:
               1. 索引操作:
    var arr = ["hello","world"];
                    增:给并不存在的索引赋值
    arr[5] = 1;       
    console.log(arr[5]);      //1
    console.log(arr);           //["hello","world",empty*3,1];
                    删:
    console.log(arr.length)         //2
    arr.length = 1;                
    console.log(arr)                ["hello"]
                    改:
    console.log(arr[0]);    //hello
    arr[0] = "aaaa"                        //【】将第几位的字符改变
    console.log(arr)                    //["aaaa","world"]
                    查:数据的遍历
    console.log(arr[0])      //hello
    console.log(arr[1])      //world
    for(var i = 0;i<arr.length;i++){
            console.log(arr[i])     //全部打印出来
    }
     
     2.方法操作:
    var arr = ["hello","world"];
    console.log(arr)                    //["hello","world"]
     方法:对象中的函数属性
    push:在数组的最后增加
    arr.push(3,4,5,6,7)            
    console.log(arr)    //["hello","world",3,4,5,6,7]
    pop:删除数组的最后一位数据
    arr.pop();
    console.log()   //["hello"]
     
    unshift:在数组的开头增加
    arr.unshift(3,4,5,6,7)
    console.log(arr)           //[3,4,5,6,7,"hello","world"]
    shift:删除数组的第一位数据
    arr.shift();    //["world"]
    var arr = ["hello","aa","bb","cc","dd","world"];
    splice(start,num,replaceDate1,replaceDate2,.........)至少有三个
    arr.splice(m,n)        //m 【0,1,2.。。】
    arr.splice(2,1)     //删除指定位置  ["hello","aa","cc","dd","world"] 
    arr.splice(2,1,"js")  //删除并替换一个或多个   ["hello","aa","js","dd","world"]  
    arr.splice(2,1,"js","ESCA") 
    arr.splice(2,0,"js",...)  //在指定位置新增一个或多个 ["hello", "aa", "js", "bb", "cc", "dd", "world"]                   
     //(m,n)m 第m个位置开始删除   删除n个 n个字符  “  ”删除的位置添加新元素
     
     
    slice(m,n):截取,从索引m,截取到索引n前一个
    var arr = [5,61,17,28,9,19,16,18];
    console,log(arr);
    var a = arr.slice(2,6);      //[17,28,9,19]
    var a = arr.slice(3,7);        //[28,9,19,16]
    console.log(a)
     
    sort():字符的排序,逐位比较
    arr.sort(function(a,b){
        return a-b;       //降序 [5, 9, 16, 17, 18, 19, 28, 61]
        return b-a;        //升序 [61, 28, 19, 18, 17, 16, 9, 5]
    });
    console.log(arr)
     
    四.数组的操作方法
     
       方法:函数,处理数据  
       功能:观察提现
       处理数据:找返回值
     
       数组的方法:
                  功能:关注其执行结果
                  操作数据类:关注其返回值
        功能方法没有必要关注返回值
        但是功能方法可以有返回值
     
    *随机数:Math.random()
    //Math.radom()随机抽取0~1的小数//
     
    for(var i = 0;i<10;i++){
              Math.round()遇到小数四舍五入      , parseInt()遇到小数则向下
        console.log(Math.round(Math.random()*(10-1)+1))
    }                                                          a,,b无需按大小顺序编写
     
     
    function random(a,b){
                Math.round(Math.random()*(a-b)+b); 
            }
    i为次数    结果得到a~b i个随机数
     
                
    五.数组的排序:sort(function(){})
     
    数组的排序方式
        冒泡排序:两两比较
    var arr=[5,7,2,9,1]
    //0-1 1-2 2-3 3-4     0~length-1  -0  原本的次数
    //0-1 1-2 2-3        (0~length-1) -1    少执行1次
    //0-1 1-2            (0~length-1)-2       
    //0-1                (0~length-1)-3
    长度   length
    比了length-1轮    length-1行
    多行多列 循环嵌套
                                   次数,外层循环控制行  length-1   
    for(var i=0;i<arr.length-1; i++){ 
                                     内层循环控制列      随着i次数增大    j执行次数 3210
            for(var j=0;j<arr.length-1 -i){
                    if(arr[j]>arr[j+1]){   ---->两两相比
                        var ls=arr[j];
                        arr[j]=arr[j+1];       ------>互换位置
                        arr[]j+1] = ls;
                        }
              }
    }
    console.log(arr);       冒泡排序
        选择排序:将第一位和后面所有相比较,最小的交换在第一位
                            一轮比下来,第一位数最小
    var arr=[6,2,9,1,7,3]       //第一轮 6和后面所有的数比较 最小的2在前面
    0-1 0-2 0-3 0-4 0-5        0-length-1
    1-2 1-3 1-4 1-5            1-length-1
    2-3 2-4 2-5                2-length-1
    3-4 3-5                    3-length-1
    4-5                        4-length-1
    多行多列 
    length-1行(外层循环-1)
    for(var i=0;i<arr.length-1;i++){
            var min = arr[i];       // 1. 假设最小值
            var minIndex = i;         //2.   保存索引
                    j随着i增加而增加 0到4  5次   
            for(var j=i+1,j<arr.length(length不能-1 ,j跟随i);j++){   
       当j=i=0时,会发生和自己比较,但不交换,多比了一次,因此j=i+1
                    if(min>arr[j]){       //判断最小值是否为真的最小值
                            当i=0,j取0~5
                            min = arr[j];       //3.交换   获取真正的最小值
                            minIndex = j;       // 位置        获取真正最小值的索引
                    }
            } 
            arr[minIndex] = arr[i];      // 把第一位拿出来放在最小值
            arr[i] =min;                            //把最小值拿出来放在第一位
    }
    console.log(arr)
     
     
    六.数组的分类:
          1.当一个数组中都是字符时,这种数组叫字符数组
              var arr = ["a","b","c","d"]
          2.当一个数组中都是数值时,这种数组叫数值数组
              var arr = [2,3,4,5,6,7]
          3.当一个数组中都是数组时,这种数组叫数组数组(二维数组)
                多维数组
       var arr = [["a",23,true],[67,"hello"],[false,123],["a",789]];
        console.log(arr[2][1])  ---->123
          4.当一个数组中都是对象时,这种数组叫对象数组(json数组)
    json是一种格式,目前只是借用这个名字,以此说明这个格式,而跟json自身没有关系
    var arr = [{name:"admin"},{name:"zhangsan"},{name:"lisi"}]
    console.log(arr[1].name) ------>zhangsan
  • 相关阅读:
    SpringMvc上手学习
    UITapGestureRecognizer 和 UICollectionView、UITableView的点击事件冲突问题
    Omnigraffle 许可证
    REACT-NATIVE
    iOS @property、@synthesize和@dynamic
    WWDC2018 之 优化 App Assets Optimizing App Assets
    WWDC2018 之 高性能 Auto Layout
    链表
    Your development team, "", does not support the Push Notifications capability.
    xcode无线调试
  • 原文地址:https://www.cnblogs.com/SYJ1205/p/11966050.html
Copyright © 2011-2022 走看看