標籤:串連 迴圈 建立 als 參數 sar rip shift 反轉
1. 建立數組方式1. new關鍵字
var arr = new Array(1, 2, 3);
方式2. 使用字面量建立數組對象
var arr = [1, 2, 3];
2. 檢測一個對象是否是數組
- instanceof(運算子),[] instanceof Array
- Array.isArray(),HTML5方法,有相容性問題
3. 數組常用方法
具體查MDN
// 1 棧操作(先進後出)push()pop() //取出數組中的最後一項,修改length屬性// 2 隊列操作(先進先出)push()shift() //取出數組中的第一個元素,修改length屬性unshift() //在數組最前面插入項,返回數組的長度// 3 排序方法reverse() //翻轉數組sort(); //即使是數組sort也是根據字元,從小到大排序// 帶參數的sort是如何?的?// 4 操作方法concat() //把參數拼接到當前數組slice() //從當前數組中截取一個新的數組,不影響原來的數組,參數start從0開始,end從1開始splice() //刪除或替換當前數組的某些項目,參數start, deleteCount, options(要替換的項目)// 5 位置方法indexOf()、lastIndexOf() //如果沒找到返回-1// 6 迭代方法 不會修改原數組(可選)every()、filter()、forEach()、map()、some()// 7 方法將數組的所有元素串連到一個字串中。join()
4. 實現array.join方法
input:一個數組,例如var arr = [1, 2, 3, 4, 5]
output:1|2|3|4|5
Version 1:字串拼接法
function myJoin(array, seperator) { seperator = seperator || ‘,‘; array = array || []; if (array.length == 0){ return ‘‘; } var str = array[0]; for (var i = 1; i < array.length; i++) { str += seperator + array[i]; } return str;}var array = [6, 3, 5, 6, 7, 8, 0];console.log(myJoin(array, ‘-‘));console.log(array.join(‘-‘))
5. 實現array.reverse方法
將一個字串數組的元素的順序進行反轉
input:["a", "b", "c", "d"]
output:[ "d","c","b","a"]
Version 1:第i個元素和第length-i-1個元素交換,for迴圈中i < 數組的一半即可
function myReverse(arr) { // 數組為空白即返回空數組 if (!arr || arr.length === 0) { return []; } // 遍曆到數組長度的一般即可 for (var i = 0; i < arr.length / 2; i++) { var tmp = arr[i]; arr[i] = arr[arr.length - i - 1]; arr[arr.length - i -1] = tmp; } return arr; } var array = [‘a‘, ‘b‘, ‘c‘, ‘d‘]; console.log(array); console.log(myReverse(array)); console.log(array.reverse());
6. 清空數組
// 方式1 推薦 arr = [];// 方式2 arr.length = 0;// 方式3arr.splice(0, arr.length);
案例1. 工資的數組[1500, 1200, 2000, 2100, 1800],把工資超過2000的刪除
方式1:使用輔助數組,遍曆和if過濾。(缺點:不是原地操作)
var array = [1500,1200,2000,2100,1800];var tmpArray = [];for (var i = 0; i < array.length; i++) { if(array[i] < 2000) { tmpArray.push(array[i]); }}console.log(tmpArray);
方式2:使用filter高階函數(函數式編程)
var array = [1500, 1200, 2000, 2100, 1800];array = array.filter(function (item, index) { if (item < 2000) { return true; } return false;});console.log(array);
案例2. ["c", "a", "z", "a", "x", "a"]找到數組中每一個a出現的位置
方式1. 用到array.indexOf方法,也是缺點
var array = [‘c‘, ‘a‘, ‘z‘, ‘a‘, ‘x‘, ‘a‘];do { var index = array.indexOf(‘a‘,index + 1); if (index != -1){ console.log(index); }} while (index > 0);
案例3. 去掉一個數組中重複的元素
方式1. 使用k-v容器,k儲存原數組中的元素,v儲存原數組中元素出現的次數;不管次數多少次,都儲存在新的數組一次。
// 建立數組 var arr = [‘c‘, ‘a‘, ‘z‘, ‘a‘, ‘x‘, ‘a‘]; // 清除重複元素 function clear(array) { // 1. 用key-value的容器儲存元素出現的次數 var tmpDict = []; // var tmpDict = {}; for (var i = 0; i < array.length; i++) { var item = array[i]; if (tmpDict[item]) { tmpDict[item]++; } else { tmpDict[item] = 1; } } // 2. 儲存在一個新的數組中。容器中出現次數大於1和等於1的元素都只添加一次到新的數組中。 var tmpArray = []; for (var key in tmpDict) { if (tmpDict[key] == 1) { tmpArray.push(key); } else { // 如果新的數組中沒有原本數組的元素,則添加 if (tmpArray.indexOf(key) == -1) { tmpArray.push(key); } } } return tmpArray; } // 測試 console.log(clear(arr));
JavaScript - Array對象,數組