JavaScript之數組

目錄算法

數組1編程

建立數組2數組

訪問數組2dom

遍歷數組3函數

數組分類3spa

數組方法4指針

應用1對象

數組屬性1排序

排序算法1索引

1. 函數的值傳遞和引用傳遞(堆和棧及索引思惟)1

對象的兩種建立方式1

應用:1

綜合應用:1

 

數組

定義:數組是一個能夠存儲一組或一系列相關數據的容器。

爲何要使用數組?

   1:爲了解決大量相關數據的存儲和使用的問題。

   2:模擬真實的世界(班級、軍隊)

建立數組

1:經過構造函數的方式來建立。 var a = new Array();

  1.直接賦值

   var a=new Array(數據1,數據2,…);

   --------------------------------------------------------------

   var a=new Array(數值)

       若是括號中只有一個元素,而且這個元素是數值類型的,那麼他就是指定數組的長度。 而且它的值都是undefined

      數組的屬性:length 屬性 (獲取整個數組的長度)。

  2.聲明之後再賦值

var a=new  Array(); a[0]=1;  a[1]=2;  a[2]=3;

2JSON方式建立數組 var a=[];

1.直接賦值:

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

2.聲明之後再賦值:

      var a=[]; a[0]=1;  a[1]=2;  a[2]=3;

JS數組能夠存儲任何類型的值。

訪問數組

經過數組的(中括號)下標訪問。

數組下標從0開始,他的最大值,是length-1。有8個元素的話,則長度是8,若是要訪問最後一個元素,則訪問7。由於下標從0開始,01234567

 

數組的操做

arr.push(數組元素......) 參數之間要用逗號隔開。

    向數組的末尾添加新的元素,返回值是新數組的長度。

    能夠一次添加多個元素。

 

arr.pop()

    刪除數組的最後一個元素,返回刪除的元素

arr.unshift(數組元素.....)

    向數組的開頭加入新的元素,返回值是新數組的長度。

    能夠一次添加多個元素arr.shift()

刪除數組的第一個元素,返回刪除的元素

 

遍歷數組

1for循環。

2while循環。

3for in循環。

for in的做用:

1:用於數組的遍歷。

2:用於對象屬性的遍歷。

數組分類

整數數組/字符串數組/對象數組/二維數組

 

按照維度來分類

     1.一維數組

     2.二維數組

     聲明二維數組:

var arr=[ [1,2,3], [4,5,6]];    alert(arr[1][1]);

//5

 

應用

1山上有一口缸能夠裝50升水,如今有15升水。老和尚叫小和尚下山挑水,每次能夠挑5升。問:小和尚要挑幾回水才能夠把水缸挑滿?經過編程解決這個問題。

2定義一個含有30個整型元素的數組,按順序分別賦予從2開始的偶數;

而後按順序每五個數求出一個平均值,

放在另外一個數組中並輸出。試編程。

3經過循環按行順序爲一個5×5的二維數組a125的天然數,而後輸出該數組的左下半三角。試編程。

排序算法

1:冒泡排序

5,1,3,2,4

1,5,3,2,4

1,3,5,2,4

1,3,2,5,4

1,3,2,    4,            5

           1,       ,2,                  3                 4,                     5

 

思路分析:在要排序的一組數中,對當前還未排好的序列,從前日後對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。

即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。

function bubbleSort (arr) {

    // 控制冒泡的
    for (var i = 0;i<arr.length-1;i++) {

        // 控制每輪冒出一個數須要比較的次數
        for (var j = 0; j < arr.length-1-i; j++) {
            if (arr[j] > arr[j+1]) {
                var temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
       }
    }
    return arr;
}

2選擇排序

思路分析:選擇排序和冒泡排序相似,也是依次對相鄰的數進行兩兩比較。不一樣之處在於,它不是每比較一次就調換位置,而是一輪比較完畢,找到最大值(或者最小值)以後,將其放在正確的位置,其餘數的位置不變。

1,5,3,2,4

 

1,  5,3,2,4  //1

1,2    5,3,4 //2

1,2,3   5,4//3

1,2,3,4  5 //4

1,2,3,4,5 //5

 

function selectionSort(arr){

var len = arr.length,min;

for (i=0; i < len; i++){

// 將當前位置設爲最小值

min = i;

// 檢查數組其他部分是否更小

for (j=i+1; j < len; j++){

if (arr[j] < arr[min]){

min = j;

}

}

// 若是當前位置不是最小值,將其換爲最小值

if (i != min){

var temp = arr[i];

arr[i] = arr[min];    

arr[min] = temp;

}

} return arr;

}

1. 函數的值傳遞和引用傳遞

1:值傳遞

定義:調用函數時將實際參數複製一份傳遞到函數中,這樣在函數中若是對參數進行修改,將不會影響到實際參數。

2:引用傳遞

定義:調用函數時將實際參數的地址傳遞到函數中,這樣在函數中若是對參數所進行的修改,將影響到實際參數。

 

堆和棧及索引思惟

棧(stack)和堆(heap)

棧爲自動分配的內存空間;而堆 則是動態分配的內存。

基本類型和引用類型

  基本類型:存放在棧內存中的簡單數據段,數據大小肯定,內存空間大小能夠分配。

  5種基本數據類型有Undefined、Null、Boolean、Number 和 String,它們是直接按值存放的,因此能夠直接訪問。

  引用類型:存放在堆內存中的對象,變量實際保存的是一個指針,這個指針指向另外一個位置。每一個空間大小不同,要根據狀況開進行特定的分配。

  當咱們須要訪問引用類型(如對象,數組,函數等)的值時,首先從棧中得到該對象的地址指針,而後再從堆內存中取得所需的數據。

對象的兩種建立方式 

1.構造函數 建立對象

2.JSON形式建立對象 {name’zhangsan’}  或者 {‘name’’zhangsan’}

隨機點名程序

現有數組存在學生姓名 var arr = [‘zhangsan’,’lisi’] ,使用Math.random() 實現

應用:

1數組的冒泡排序

2數組的選擇排序

3編寫函數map(arr) 把數組中的每一位數字都增長30%

4編寫函數has(arr , 60) 判斷數組中是否存在60這個元素,返回布爾類型。

5.隨機生成一個五位之內的數,而後輸出該數共有多少位,每位分別是什麼

綜合應用:

1編寫函數norepeat(arr) 將數組的重複元素去掉,並返回新的數組12,2,3,4,5

2有一個從小到大排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。

3使用JSON形式建立一個對象,該對象存儲一個學生的信息,該對象包含學號、身份證、年齡、性別、所學專業等屬性信息,

同時該對象包含一個自我介紹的方法,用來輸出該對象的全部信息

4如下是某班級一次考試的成績表。請計算總成績,並按總成績排名。統計各單科成績第一名,輸出其成績與學號。

相關文章
相關標籤/搜索