標籤:
本文是金旭亮老師網易雲課堂的課程筆記,記錄下來,以供備忘。
數組是“多態數組" ,啥都可以放
1 //JavaScript中的多態數組2 var arr = ["one", 2, true,3 function (a, b) { return a + b; },4 [1,2,3]5 ];
數組是一個對象,擁有自己的屬性與方法
1 //數組是一個對象2 console.info(arr);3 console.info(arr.length);
訪問與寫入訪問
1 //數組元素通過下標訪問2 console.info(arr[0]); //one3 //調用放在數組中的函數4 console.info(arr[3](100, 200));//3005 //訪問放在數組中數組6 console.info(arr[arr.length - 1].length);//37 //當讀取沒有內容的位置時,返回undefined8 console.info(arr[100]);//undefined
寫入:
1 var arr2 = []; 2 //向空數組賦值,將導致數組中添加一個元素 3 arr2[0] = "Hello"; 4 //讀取新加入的元素 5 console.info(arr2[0].toUpperCase()); 6 //跳著賦值,將導致數組自動地增長 7 arr2[3] = 3; 8 console.info(arr2.length);//4 9 console.info(arr2);//["Hello", 3: 3]10 //中間的值為undefined11 console.info(arr2[1]); //undefined
在尾部追加:
1 //自動在尾部追加元素2 var arr3 = [];3 for (var i = 0; i < 5; i++) {4 arr3[arr3.length] = i;5 }6 //數組內容為:[0, 1, 2, 3, 4]7 console.info(arr3);數組常用方法:
concat 直接連接兩個數組的元素。
1 var left = [1, 2], right = [3, 4];2 console.info(left.concat(right)); //[1,2,3,4]
join 數組中每個元素通過分隔字元相連.
1 var words = ["鎚子", "剪刀", "布"];2 var result = words.join(‘<-->‘);3 //鎚子<-->剪刀<-->布4 console.info(result);
數組當
堆棧: push 入棧 pop 出棧
1 var m_arr = [‘a‘, ‘b‘, ‘c‘];2 m_arr.push(‘d‘);3 console.info(m_arr); //["a","b","c","d"]4 m_arr.pop();5 console.info(m_arr); //["a","b","c"]
在
開頭運算元組元素:
unshift 開頭插入
shift 刪除開頭
1 var arr = ["a", "b", "c"];2 arr.unshift("99");3 console.info(arr); //["99", "a", "b", "c"]4 var shifted = arr.shift();5 console.info(shift); //996 console.info(arr); //["a", "b", "c"] 截取: 使用
slice提取子數組 按[起始索引值,結束索引值) 來截取:
1 var bigArr = ["a", "b", "c", "d", "e", "f"];2 var subArr = bigArr.slice(1, 4);3 console.info(subArr); //"b","c","d"
刪除元素:
splice 從第n個索引值開始刪除m個
1 var arr = ["a", "b", "c", "d", "e", "f"];2 arr.splice(2, 3); //索引值第2個開始刪除3個3 console.info(arr); // a, b, f
delete 雖刪除但下標猶在.
1 var arr = ["a", "b", "c", "d", "e", "f"];2 delete arr[2];3 console.info(arr); //["a", "b", 3: "d", 4: "e", 5: "f"]4 console.info(arr[2]); //undefined
當splice有多於2個參數時,就變成刪除後再插入元素
1 var arr = ["a", "b", "c", "d", "e", "f"];2 arr.splice(2, 3,"one","two"); //索引值第2個開始刪除3個後再插入 one , two3 console.info(arr); // a,b,one,two,f
數組排序: 排序與反轉:
1 var data = [];2 for (i=0 ; i<=6; i++) {3 data[data.length] = Math.floor(Math.random() * 100);4 }5 console.info(data.sort()); //升序6 console.info(data.reverse()); //反轉 對象數組也排序:
- 自訂排序的關鍵在於設計好排序比較函數。
- 排序是在原數組上進行的.
1 //定義一個Person建構函式 2 function Person(name, age) { 3 this.name = name; 4 this.age = age; 5 }; 6 //定義一個函數,用於輸出Person集合中的資料 7 function printPeople(arr) { 8 for (var i = 0; i < arr.length; i++) { 9 console.info(arr[i].name + "有" + arr[i].age + "歲");10 }11 };12 //使用forEach方法,以回調方式遍曆處理數組中的元素13 function printPeople2(arr) {14 //forEach回呼函數參數說明:15 //value:代表數組中的單個元素16 //index:代表數組中此元素對應的索引17 //traversedObject:引用被遍曆的數組18 arr.forEach(function (value, index, traversedObject) {19 console.info(value.name + "有" + value.age + "歲");20 });21 };22 //產生測試資料23 var people = [];24 for (var i = 1; i < 5; i++) {25 var age = Math.floor(Math.random() * 100);26 people[people.length] = new Person(‘使用者‘ + i, age);27 }28 console.info("原始數組:");29 printPeople(people);30 //自訂排序31 //比較函數具有兩個參數 a 和 b,其傳回值如下:32 //若 a 小於 b,在排序後的數組中 a 應該出現在 b 之前,則返回一個小於 0 的值。33 //若 a 等於 b,則返回 0。a,b視為相等34 //若 a 大於 b,則返回一個大於 0 的值。b應該排在a的後面35 people.sort(function (p1, p2) {36 if (p1.age > p2.age) return 1;37 if (p1.age < p2.age) return -1;38 return 0;39 });40 console.info("排序後的數組:");41 printPeople2(people);
JavaScript我學之七數組