数组

一.数组的概念
        一组数据,数据的组合
    那些数据的组合,只要是数据(数据),就可以放在数组中
 
数组的意义:
    可以同时操作多个数据
 
二.数组的创建和使用
    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
原文地址:https://www.cnblogs.com/SYJ1205/p/11966050.html