目錄算法
數組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;
2:JSON的方式建立數組。 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()
刪除數組的第一個元素,返回刪除的元素
1:for循環。
2:while循環。
3:for 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的二維數組a賦1到25的天然數,而後輸出該數組的左下半三角。試編程。
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:值傳遞
定義:調用函數時將實際參數複製一份傳遞到函數中,這樣在函數中若是對參數進行修改,將不會影響到實際參數。
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) 將數組的重複元素去掉,並返回新的數組。【1,2,2,3,4,5】
2:有一個從小到大排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
3:使用JSON形式建立一個對象,該對象存儲一個學生的信息,該對象包含學號、身份證、年齡、性別、所學專業等屬性信息,
同時該對象包含一個自我介紹的方法,用來輸出該對象的全部信息。
4:如下是某班級一次考試的成績表。請計算總成績,並按總成績排名。統計各單科成績第一名,輸出其成績與學號。