建立和訪問數組及使用方法

數組

數組:一組變量的集合,起一個統一的名字。
如何使用數組:建立 取值 賦值
建立:共四種數組

  1. 建立空數組:var 數組名=[]; var 數組名=new Array();優化

    什麼時候使用:暫時不知道數據內容,先建立空數組,再追加
  2. 建立同時初始化數組內容:var 數組名=[值1,值2,...]code

    什麼時候使用:建立時,就已經知道數組的內容
  3. 建立指定元素個數的數組: var 數組名=new Array(n);建立一個新數組對象,同時初始化n個空元素對象

  4. 建立同時初始化數組內容:var 數組名=new Array(值1,值2,...)排序

var week=["日","一","二","三","四","五","六"];
            0   1    2   3    4    5    6
            console.log("今天星期"+week[5]);

數組中每一個元素<==>一個變量: 用法和變量徹底相同!索引

2. 取值:獲取數組中指定位置的元素內容
   下標:數組中標識每一個元素位置的序號
       默認,自動從0開始,每一個+1,到元素個數-1結束
   如何取值:var 元素的值=數組名[下標];
3. 賦值:將新值放入指定位置的元素中保存
   如何賦值:數組名[下標]=新值;

數組是引用類型的對象:
    數組名做爲變量賦值或參數傳遞時,都是將地址值複製給對方
    後果,對方修改數組的內容,訪問原數字名也會受影響

null: 主動釋放一個對象的引用。null自己是原始類型的值
垃圾回收器:伴隨主程序,同時運行的後臺程序
            記錄每一個對象當前被引用的次數
          被引用的次數==0,垃圾回收器自動釋放對象內存空間
強烈建議:在使用完,較大對象後,主動賦值爲null,老是好習慣
  1. 獲取數組的元素個數:arr.length屬性,不加圓括號
    固定套路:
         得到數組最後一個元素:arr[arr.length-1];內存

    向數組末尾追加一個新元素:arr[arr.length]=新值
    js中的數組 vs 其餘語言中的數組:3個區別:
      1. 不限制元素的數據類型
      2. 不限制數組長度
      3. js的數組越界不會出錯!
           賦值時:自動建立制定下標的元素,保存新值
                   length屬性,會隨最大下標而變化
           取值時:視圖從沒有的下標位置取值,返回undefined
    1. 遍歷數組:從第0個元素開始,依次獲取每一個元素,字符串

      對每一個元素執行相同的操做
         下標:遍歷數組時,天生的循環變量!
var emps=[];
            var input='';
            while((input=prompt("輸入員工姓名"))!="exit"){
                emps[emps.length]=input;
            }
            console.log(emps);
var arr=[2,5,4,6,7,9];
            function getMax(arr){
                var max=arr[0];
                for(var i=1;i<arr.length;i++){
                    arr[i]>max&&(max=arr[i]);
                }
                return max;
            }
            console.log(getMax(arr));//獲取數組中最大值
//獲取元素下標的位置
            function indexOf(arr,elem){
                for(var i=0;i<arr.length;i++){
                    if (arr[i]==elem) {
                        return 1;
                    } else{
                        return -1;
                    }
                }
            }
            var emps=["A","B","C","E"];
            console.log(indexOf(emps,prompt("輸入要查找的姓名")));

//冒泡排序get

function myArr(arr){
                for(var i=0;i<arr.length;i++){
                    for(var j=0;j<arr.length-i-1;j++){
                        if(arr[j]>arr[j+1]){
                            var temp=arr[j];
                            arr[j]=arr[j+1];
                            arr[j+1]=temp;
                        }
                    }
                }
            }
            var arr=[12,4,9,21,43,3];
            myArr(arr);
            console.log(arr);

關聯數組

數組的API:
關聯數組(hash數組):可自定義元素下標名稱的數組(關聯數組是字符串)
索引數組:自動從0開始分配連續不重複的序號下標
如何建立關聯數組:2種方式:input

1. 先建立普通空數組,再追加自定義下標的元素
     var ym=[];
     ym["sname"]="MM";
     ym["A"]=81;
     ym["B"]=53; 
     ym["C"]=89;
*關聯數組的length屬性失效*
*關聯數組中的key不能重複*
關聯(hash)數組優點:查找極快!和元素個數無關!

  2. 建立數組同時,初始化元素內容:
     var mm={"sname":"MM","A":81,"B":53,"C":89};
               key    value
     關聯數組中保存的是多個key/value對兒
                        鍵  值

//數組去重

var arr=[2,2,4,5,3,6,5,3];
            function myArr(arr){
                var arr1=[];
                for(var i=0;i<arr.length;i++){
                    if(arr1.indexOf(arr[i])==-1){
                        arr1.push(arr[i]);
                    }
                }
                return arr1;
            }
            console.log(arr);
            console.log(myArr(arr));

如何遍歷關聯數組:

for(var key in arr){
//依次取出arr中每一個key,存在變量key中
arr[key]-->得到當前正在遍歷的key中存儲的值
   }

## 數組API ##

數組轉換成字符串:有兩種方法

  1. var str=arr.toString(); 默認只能以逗號分隔每一個元素。

  2. var str=arr.join("鏈接符");自定義元素間的鏈接符
    固定套路:

    1. 將字符數組,無縫拼接爲單詞:
      好比: var chars=["H","e","l","l","o"];

    2. 將單詞數組,拼接爲句子:

    3. 將數組轉化爲頁面上的列表/選擇元素:

    優化:頻繁字符串拼接,推薦使用數組的join方法做爲替代
    步驟:

    1. 先將要拼接的子字符串,放入一個數組中,臨時保存

    2. 遍歷結束後,一次性join成一個完整字符串

var words=["we","two","who","and","who"];
    var str=words.join(" ");
    console.log(str);//we two who and who

鏈接數組和獲取子數組:不修改原數組對象,返回新數組對象

concat: var newArr=arr.concat(值1,值2,[值3,值4].....)
   slice: var subArr=arr.slice(starti[,endi+1]);
             starti: 開始的位置下標
             endi: 獲取到的位置下標
             ***含頭不含尾***
             slice支持倒數下標
             省略endi,從starti一直取到結尾
var arr=[1,4,3];
            var arr1=[22,44];
            var newArr=arr.concat(13,134,arr1);
            console.log(arr);

splice:刪除,插入,替換任意位置的任意個元素

***直接修改原數組 
刪除:splice(starti,n);//starti
var arr=[1,2,4,4,5];
            var id=arr.splice(2,2);
            console.log(arr);
            console.log(id);
相關文章
相關標籤/搜索