【前面的話】說數組“萬能”,可能誇張了一點,但是就個人觀點,數組的運用是非常廣泛的,這裡的廣泛當然也包含了在其他語言中的運用。舉例說明,在javascript當中,由於字元串的不可變性,在進行字元串拼接等操作中,都極大的消耗了記憶體,這時候用數組來“裝載”字元串,操作簡單,又不消耗過多的記憶體,真可謂是 ...
【前面的話】說數組“萬能”,可能誇張了一點,但是就個人觀點,數組的運用是非常廣泛的,這裡的廣泛當然也包含了在其他語言中的運用。舉例說明,在javascript當中,由於字元串的不可變性,在進行字元串拼接等操作中,都極大的消耗了記憶體,這時候用數組來“裝載”字元串,操作簡單,又不消耗過多的記憶體,真可謂是“香餑餑”。下麵我總結了數組當中常用的一些操作。
——首先我們來對數組進行簡單的介紹:
// var o = { }; // o.c 屬性; // o["c"] 鍵-值 的集合; 字典 // 這兩個的效果是一樣的 var array = [6,7,5,84,6]; //所有對象,都具有toString和valueOf console.log(array.toString());//toSTring內部就調用join() console.log(array.valueOf());//返回當前數組對象
1、 array.join(); // 將數組元素連接起來以構建一個字元串
1 // 將一個字元串數組輸出為|分割的形式,比如“劉備|張飛|關羽”。使用兩種方式實現 2 var array = ["劉備","張飛","關羽"]; 3 console.log(array.join("|"));
2、 array.reverse(); // 顛倒數組中元素的順序
1 // 將一個字元串數組的元素的順序進行反轉。["a","b","c","d]——>["d","c","b","a"] 2 var array = ["a","b","c","d"]; 3 array.reverse(); 4 console.log(array);
3、 array.filter(); // 使用指定的函數測試所有元素,並創建一個包含所有通過測試的元素的新數組 //這裡涉及到相容舊環境的問題
1 var array = [1500,1200,2000,2100,1800]; 2 //會把篩選的結果返回一個新數組 3 array = array.filter(function(element,index,thisObj){ 4 //element 數組中的每一個元素 5 //index 索引 6 //thisObj 當前數組對象 7 if (element >= 2000) { 8 return false; 9 } 10 return true; 11 }); 12 console.log(array);4、 array.indexOf(); array.lastIndexOf();
// ["c","a","z","a","x","a"]找到數組中每一個a出現的位置,找不到返回-1 //indexOf 獲取數組中第一個符合條件元素的位置 //lastIndexOf 獲取數組中最後一個符合條件的元素的位置 var array = ["a","a","z","a","x","a"]; console.log(array.indexOf("a",2)); console.log(array.lastIndexOf("a")); // var index = -1; do { index = array.indexOf("a", index+1); if (index != -1) { console.log(index); } }while(index != -1);
5、 array.sort();
1 // ["c","a","z","a","x","a"]編寫一個方法,求數組中每一個字元出現的次數 2 // 排序 3 var array = [3,6,1,5,10,2]; 4 // array.sort();//如果不傳參數,按預設的方式排序,按第一個字元的ascii碼排序 5 // console.log(array); 6 7 //如果 compareFunction(a, b) 小於 0 ,那麼 a 會被排列到 b 之前; 8 //如果 compareFunction(a, b) 等於 0 , a 和 b 的相對位置不變。備註: ECMAScript 標準並不保證這一行為,而且也不是所有瀏覽器都會遵守(例如 Mozilla 在 2003 年之前的版本); 9 //如果 compareFunction(a, b) 大於 0 , b 會被排列到 a 之前。 10 array.sort(function(a,b) { 11 return a - b; 12 }); 13 console.log(array); 14 15 //調用自己模擬的sort 16 //sort(array, function(a,b) { 17 // return -(a - b); 18 //}); 19 //console.log(array);
6、 array.splice(); //插入、刪除或替換數組的元素
var a = [1,2,3,4,5,6,7,8] a.splice(4); // 返回 [5,6,7,8]; a is [1,2,3,4] a.splice(1,2); // 返回 [2,3]; a is [1,4] a.splice(1,1); // Netscape/JavaScript 1.2 返回 4 ,應該返回 [4] a.splice(1,0,2,3); // Netscape/JavaScript 1.2 返回 undefined ,應該返回 []
7、 array.slice(); // 從當前數組截取一個新數組
var a = [1,2,3,4,5]; a.slice(0,3); // 返回 [1,2,3] a.slice(3); // 返回 [4,5] a.slice(1,-1); // 返回 [2,3,4] a.slice(-3,-2); // 返回 [3]; IE 4存在的Bug: 返回[1,2,3]8、 array.forEach(); //遍曆數組 // 註意與filter的區別
//這裡涉及到相容舊環境
1 var array = [4,6,7,8,3,46,8]; 2 3 //forEach 遍曆數組 4 // array.filter(function (item,index,obj) { 5 // }) 6 7 for(var i = 0; i < array.length ; i++) { 8 var item = array[i]; 9 } 10 11 array.forEach(function (item, index,obj) { 12 console.log(item); 13 console.log(index); 14 console.log(obj); 15 })
【輸出】
9、 html5提供的方法: i)indexOf ; lastIndexOf ii)filter ; forEach10、清空數組的三種方式:
var array = [1, 2, 3, 4]; //方式1 array.splice(0,array.length); //刪除數組中所有項 //方式2 array.length = 0; //length屬性可以賦值,length是只讀 //方式3 array = []; // 推薦