【監測數組】 備註:ES3中使用instanceof操作符的前提是,當前頁面只有一個執行環境,當網頁中存在多個框架的時候,這種檢測方式出現問題;為瞭解決這個問題,ES5提出了第二種方法 備註:IE8是不支持這種檢測的,當然了對於其相容性還是可以實現的;不過現在對於IE8早已無人問津 【數組轉換字元串 ...
【監測數組】
- 使用instanceof操作符,進行檢測
ar arr = [1,2,3]; // arr = '非非'; if(arr instanceof Array){ console.log('是數組'); }else{ console.log('不是數組'); }
備註:ES3中使用instanceof操作符的前提是,當前頁面只有一個執行環境,當網頁中存在多個框架的時候,這種檢測方式出現問題;為瞭解決這個問題,ES5提出了第二種方法
- Array.inArray()方法
var arr = [1,2,3]; // arr = '非非'; if(Array.isArray(arr)){ console.log('是數組'); }else{ console.log('不是數組'); }
備註:IE8是不支持這種檢測的,當然了對於其相容性還是可以實現的;不過現在對於IE8早已無人問津
【數組轉換字元串】
- toString()方法
var arr = [ [1,2,3], ['非非','咖啡'], [8,9] ]; console.log(arr.toString());//1,2,3,非非,咖啡,8,9
- join()方法
var arr = [ [1,2,3], ['非非','咖啡'], [8,9] ]; console.log(arr.join(','));//1,2,3,非非,咖啡,8,9 console.log(arr.join('||'));//1,2,3||非非,咖啡||8,9
【數組排序】
- reverse()反轉數組項的順序
var arr = [1,2,3,4]; var arr1 = ['非非','琪琪','艾艾']; console.log(arr.reverse());//[4, 3, 2, 1] console.log(arr1.reverse());//["艾艾", "琪琪", "非非"]
- sort()
- 預設情況下,按升序排列數組項(預設比較的是每一項的字元串形式,toString())
var arr = [1,2,3,4]; var arr1 = ['非非','琪琪','艾艾']; var arr2 = [1,2,3,4,11]; console.log(arr.sort());//[1, 2, 3, 4] console.log(arr1.sort());// ["琪琪", "艾艾", "非非"] console.log(arr2.sort());//[1, 11, 2, 3, 4]
- sort()接受一個比較函數的參數
function compare(value1, value2){ if(value1 < value2){ return -1; }else if(value1 > value2){ return 1; }else{ return 0; } } // 簡化比較函數 function compare(value1, value2){ return value1 - value2; } var arr = [1,2,3,4,11]; console.log(arr.sort(compare));//[1, 2, 3, 4, 11]
- 預設情況下,按升序排列數組項(預設比較的是每一項的字元串形式,toString())
【數組插入】
- push()從後面插入新項
var arr = [1,2,3,4]; arr.push(8,9) console.log(arr);//[1, 2, 3, 4, 8, 9]
- unshift()從前面插入新項
var arr = [1,2,3,4]; arr.unshift(8,9) console.log(arr);//[8, 9, 1, 2, 3, 4]
- splice()-插入
var arr = [1,2,3,4,5]; arr.splice(3,0,'非非') console.log(arr);//[1, 2, 3, "非非", 4, 5]
【數組刪除】
- pop()刪除數組最後一項
var arr = [1,2,3,4]; arr.pop() console.log(arr);//[1, 2, 3]
- shift()刪除數組第一項
var arr = [1,2,3,4]; arr.shift() console.log(arr);//[2, 3, 4]
- splice()-刪除
var arr = [1,2,3,4,5,6,7,8,9]; arr.splice(0,3) console.log(arr);//[4, 5, 6, 7, 8, 9]
【數組替換】
splice()-替換
var arr = [1,2,3,4,5]; arr.splice(2,1,'非非','琪琪') console.log(arr);//[1, 2, "非非", "琪琪", 4, 5]
【數組位置查找】
var arr = [1,2,'非非',3,4,5,'非非','琪琪']; console.log(arr.indexOf('非非'));//2 console.log(arr.lastIndexOf('非非'));//6
【數組合併】
concat()
var arr = [1,2,3,4,11]; var arr1 = ['非非','琪琪']; console.log(arr.concat(arr1));// [1, 2, 3, 4, 11, "非非", "琪琪"] console.log(arr1.concat(arr));//["非非", "琪琪", 1, 2, 3, 4, 11]
【數組截取】
slice(),接收一個或兩個參數,第一個參數是數組起始位置(結果包括起始位置項),第二個參數是結束位置(結果不包括結束項);支持負數,用長度length減去負數,就是當前項的位置
var arr = [1,2,3,4,5,6,7,8,9]; console.log(arr.slice(1));//[2, 3, 4, 5, 6, 7, 8, 9] console.log(arr.slice(1,5));//[2, 3, 4, 5] console.log(arr.slice(-3));//[7, 8, 9] console.log(arr.slice(-4,-1));//[6, 7, 8]
【迭代方法】
- every()對數組中的每一項運行給定函數,如果該函數對每一項都返回true,則返回true
var arr = [1,2,3,4,5,6,7,8]; var everyMethods = arr.every(function(item, index, array){ return item > 0; }); console.log(everyMethods);//true
- filter()對數組中的每一項運行給定函數,返回該函數會返回true的項組成的數組
var arr = [1,2,3,4,5,6,7,8]; var filterMethods = arr.filter(function(item, index, array){ return item > 6; }); console.log(filterMethods);//[7, 8]
- forEach()對數組中的每一項運行給定函數。這個方法沒有返回值(與使用for迴圈迭代數組一樣)
var arr = [1,2,3,4,5,6,7,8]; var forEachMethods = arr.forEach(function(item, index, array){ console.log('item=>'+item); console.log('index=>'+index); console.log('array=>'+array); }); console.log(forEachMethods); // item=>1 // array.html:24 index=>0 // array.html:25 array=>1,2,3,4,5,6,7,8 // array.html:23 item=>2 // array.html:24 index=>1 // array.html:25 array=>1,2,3,4,5,6,7,8 // array.html:23 item=>3 // array.html:24 index=>2 // array.html:25 array=>1,2,3,4,5,6,7,8 // array.html:23 item=>4 // array.html:24 index=>3 // array.html:25 array=>1,2,3,4,5,6,7,8 // array.html:23 item=>5 // array.html:24 index=>4 // array.html:25 array=>1,2,3,4,5,6,7,8 // array.html:23 item=>6 // array.html:24 index=>5 // array.html:25 array=>1,2,3,4,5,6,7,8 // array.html:23 item=>7 // array.html:24 index=>6 // array.html:25 array=>1,2,3,4,5,6,7,8 // array.html:23 item=>8 // array.html:24 index=>7 // array.html:25 array=>1,2,3,4,5,6,7,8
- map()對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組
var arr = [1,2,3,4,5,6,7,8]; var mapMethods = arr.map(function(item, index, array){ return item*2; }); console.log(mapMethods);//[2, 4, 6, 8, 10, 12, 14, 16]
- some()對數組中的每一項運行給定函數,如果該函數對任一項返回true,則返回true
var arr = [1,2,3,4,5,6,7,8]; var someMethods = arr.some(function(item, index, array){ return item > 6; }); console.log(someMethods);//true
【歸併方法】
reduce()方法 and reduceRight()方法
這兩個方法,目前所知的使用方法比較簡單,在實際的開發中,完全可以採用其他方式達到這種效果,就先養著吧,萬一那一天我明白了,再補上