標籤:fun length ever 建構函式 上下文 類型 cto data- 遍曆數組
數組是用來在單獨的變數名中儲存資料的,你可以通過方法來運算元組,如:增加資料、刪除資料等。
建立/訪問數組
通過指定數組名以及索引號碼(數組的索引從0開始),你可以訪問某個特定的元素,如arr[2]、arr[3]。
1 // 建立數組的方法有兩種:1、通過new關鍵字建立 2、通過字面量建立 2 var arr = new Array(); // 建立一個空數組 3 arr[0] = "Hello"; // 向arr數組中添加元素 4 arr[1] = "world"; // 向arr數組中添加元素 5 6 var arr1 = new Array(3); // 建立一個數組長度的3的數組 7 arr[0] = "My"; // 向arr1數組中添加元素 8 arr[1] = "name"; // 向arr1數組中添加元素 9 arr[3] = "Lily"; // 向arr1數組中添加元素10 11 var arr2 = new Array(1,2,3,4,5); // 建立數組[1,2,3,4,5]12 13 var arr3 = []; // 建立一個空數組14 var arr4 = [1,2,3]; // 建立數組[1,2,3]15 16 console.log(arr[1]); // 返回world17 console.log(arr4[2]); // 返回3
數組的屬性
1、length - 返回數組的長度,即數組元素的個數
2、prototype - 返回物件類型原型的引用
3、constructor - 返回建立數組的建構函式
1 // 數組的length屬性2 var arr = [1,2,3,4,5];3 console.log(arr.length); // 返回5
數組的方法
push() - 在數組末尾添加一個或多個元素,並返回新數組的長度(要改變原來的數組)
pop() - 刪除數組末尾的一個元素,並返回該元素(要改變原來的數組)
unshift() - 在數組開頭添加一個或多個元素,並返回新數組長度(要改變原來的數組)
shift() - 刪除數組開頭的一個元素,並返回該元素(要改變原來的數組)
slice() - 截取數組的一個片段,並以數組的形式返回該片段(不改變原數組)
splice() - 在指定位置增加或刪除數組元素,只增加元素返回空數組,刪除元素則以數組形式返回被刪除的元素(要改變原數組)
concat() - 將一個或多個數組串連,並返回串連後新的數組(不改變原數組)
reverse() - 反轉數組中的元素(要改變原來的數組)
sort() - 對數組元素排序,會改變原來的數組(預設是升序)
join(separator) - 將數組元素轉為以separator隔開的字串(預設用逗號分隔)
indexOf() - 返回元素的索引,類似字串的indexOf()方法
1 // 增加元素 push、unshift、splice (改變原數組) 2 var arr = [1,2,3]; 3 arr.push(4,5); // 返回5,arr = [1,2,3,4,5] 4 arr.unshift(-1,0); // 返回7,arr = [-1,0,1,2,3,4,5] 5 // splice(index,count,arrData) index--增加元素的位置(索引);count--從index位置開始刪除元素的個數;arrData--從index位置開始增加的元素 6 arr.splice(1,0,6); // 返回[],arr = [-1,6,0,1,2,3,4,5] 7 8 // 刪除元素 pop、shift、splice 9 var arr = [1,2,3,4,5,6,7];10 arr.pop(); // 返回7,arr = [1,2,3,4,5,6]11 arr.shift(); // 返回1,arr = [2,3,4,5,6]12 // splice(index,count) index--刪除元素的位置(索引);count--從index位置開始刪除元素的個數13 arr.splice(2,2); // 返回[4,5],arr = [2,3,6]14 15 // 截取數組 slice (不改變原數組,以數組形式返回截取的部分)16 // slice(start,[end]) - 截取數組從start開始(含),到end結束(不含);若end省略,則從start開始截取,到數組末尾17 var arr = [1,2,3,4,5];18 arr.slice(1,3); // 返回[2,3],arr = [1,2,3,4,5]19 arr.slice(3); // 返回[4,5],arr = [1,2,3,4,5]20 21 // 串連數組 contact(不改變原數組)22 var arr = [1,2];23 var arr1 = [3,4,5];24 arr.concat(arr1); // 返回[1,2,3,4,5],arr = [1,2]25 arr.concat("a","b"); // 返回[1,2,"a","b"],arr = [1,2]26 27 // 反轉數組 reverse (改變原數組)28 var arr = [1,2,3];29 arr.reverse(); // 返回[3,2,1],arr = [3,2,1]30 31 // 數組排序 sort (改變原數組)32 // sort不帶參數,按升序排列;sort帶參數,參數是一個函數33 var arr = [3,2,6,5,9,1];34 arr.sort(); // 返回[1,2,3,5,6,9],arr = [1,2,3,5,6,9]35 var arr = [9,5,6,8,2];36 arr.sort(function(a,b){37 return b-a; // 按降序排列38 // return a-b; // 按升序排列39 }); // 返回[9,8,6,5,2],arr = [9,8,6,5,2]40 41 // 數組轉字串 join 預設以逗號分隔(不改變原數組)42 var arr = [1,2,3,4];43 arr.join(); // 返回"1,2,3,4"44 arr.join(","); // 返回"1,2,3,4"45 arr.join("-"); // 返回"1-2-3-4"
遍曆數組
map() - 返回一個新數組,數組中的元素為原始數組元素調用函數處理後的值(不改變原數組)
filter() - 返回一個新的數組,新數組中的元素是通過檢查指定數組中合格所有元素(不改變原數組)
some() - 返回true或false,對數組中的每個元素進行檢查,直到返回true為止,若檢查完整個數組都為false,則返回false;它只對數組中的非空元素執行指定的函數,沒有賦值或者已經刪除的元素將被忽略
every() - 返回true或false,對數組中的每個元素進行檢查,直到返回false為止,若檢查完整個數組都為true,則返回true;它只對數組中的非空元素執行指定的函數,沒有賦值或者已經刪除的元素將被忽略
forEach() - 遍曆數組中的每一項
for迴圈遍曆數組(不介紹)
1 // map() => array.map(function(value,index,[array]){},[thisValue]) 2 // value -- 當前數組元素,index -- 當前數組元素的索引,array -- 調用map方法的數組,thiiValue -- 執行回呼函數時定義的this對象(內容物件) 3 // 返回每個項的平方 4 var arr = [1,2,3]; 5 arr.map(function(val,index){ 6 return val * val; 7 }); // 返回[1,4,9],arr = [1,2,3] 8 9 // filter() => array.filter(function(value,index,[array]){},[thisValue])10 // value -- 當前數組元素,index -- 當前數組元素的索引,array -- 調用filter方法的數組,thiiValue -- 執行回呼函數時定義的this對象(內容物件)11 // 過濾掉奇數12 var arr = [1,2,3,4,5,6];13 arr.filter(function(val,index){14 return val % 2 === 0;15 }); // 返回[2,4,6],arr = [1,2,3,4,5,6]16 17 // some() => array.some(function(value,index,[array]){},[thisValue])18 // value -- 當前數組元素,index -- 當前數組元素的索引,array -- 調用some方法的數組,thiiValue -- 執行回呼函數時定義的this對象(內容物件)19 // 檢查是否有元素大於5,有則返回true,無則返回false20 var arr = [2,3,4,6];21 arr.some(function(val,index){22 retrun val > 5;23 }); // 返回true24 25 // every() => array.every(function(value,index,[array]){},[thisValue])26 // value -- 當前數組元素,index -- 當前數組元素的索引,array -- 調用every方法的數組,thiiValue -- 執行回呼函數時定義的this對象(內容物件)27 // 檢查是否有元素大於5,有則返回false,無則返回true28 var arr = [1,2,3,6];29 arr.some(function(val,index){30 retrun val > 5;31 }); // 返回false32 33 // forEach() => array.forEach(function(value,index,[array]){},[thisValue])34 // value -- 當前數組元素,index -- 當前數組元素的索引,array -- 調用forEach方法的數組,thiiValue -- 執行回呼函數時定義的this對象(內容物件)35 // 返回數組中的每一項和索引36 var arr = [7,9,5];37 arr.forEach(function(val,index,arr){38 console.log("index:" + index + ",value:" + val);39 }); 40 // 返回index:0,value:741 // index:1,value:942 // index:2,value:5
面試題:
1、[1,2,3].map(parseInt)傳回值是什嗎?為什嗎?
解答:[1,NaN,NaN];由於parseInt需要倆個參數parseInt(string,[radix]),radix為解析時對應的基數(radix介於2~36之間,若radix省略或為0,則以十進位解析,當radix小於2或大於36,則返回NaN),而map傳了3參數(value,index,array),對應的基數不合法。
本文僅供自己在平時工作學習時作筆記使用!如有錯誤請多多指出!!!
JavaScript之數組