JS中幾種常見的數組算法
1.將稀疏數組變成不稀疏數組
/**
* 稀疏數組 變爲 不稀疏數組
* @params array arr 稀疏數組
* @return array 不稀疏的數組
*/
function noSparse(arr) {
var resArr = []; //建立空數組
for (var i = 0; i < arr.length; i ++) {
if (arr[i] !== undefined) {
resArr.push(arr[i])
}
}
return resArr;
}
var arr_demo1 = [1,2,,,,,3,4,,'a',['A','B','C'],,'M'];
console.log( arr_demo1.noSparse( arr_demo1 ) );
2.判斷一個元素在不在元素裏面
/**
* 判斷一個元素在不在一個數組裏面
* @params array arr 數組
* @params fixed 其餘參數
* @params int type 1是=== 其餘值表示只要 ==
* @return
*/
function inArray(arr, ele ,type ){
for( var i = 0; i < arr.length ; i++ ){
if( type === 1 ){
if( arr[i] === ele ){
return true;
}
} else {
if( arr[i] == ele ){
return true;
}
}
}
return false;
}
// 驗證
var arr1 = [1,3,11,5,7,9];
// console.log( inArray( arr1, 11) );
// console.log( inArray( arr1 , "11", 1) );
// console.log( inArray( arr1 , 11, 1) );
3.數組去重
方法一(用到上面 inArray函數)
/**
* 數組去重
* @params array arr 須要操做的數組
* @return array resArr 返回去重後的新數組
*/
function noRepeat( arr ){
var resArr = [];
for( var j = 0; j < arr.length; j++ ){
if( !inArray( resArr, arr[j],1 ) ){
resArr.push( arr[j] );
}
}
return resArr;
}
var arr2 = [1,1,3,2,2,4,4,1,5];
console.log( noRepeat( arr2 ) );
方法二
/**removeRepeat() 消除數組中的重複元素
* @param arr 傳入的數組做爲參數
*/
function removeRepeat( arr ){
// 先用一層for循環來遍歷第一個比較數
for( var i = 0; i < arr.length ; i++ ){
// 再用一層for循環來遍歷第二個比較數
for( j = i+1; j < arr.length ; j++ ){
if( arr[i] == arr[j] ){
arr.splice( j,1 );
j--; //當刪除重複項以後 後面的數組元素會頂上來 因此設置 j-- 保證每一項都被循環遍歷
}
}
}
return arr;
}
// 驗證
var arr_demo1 = [1,3,1,1,2,3,2,4,5,5,4,4,4,4,6];
removeRepeat( arr_demo1 );
console.log( arr_demo1 );
4.遍歷二維數組
/**遍歷二維數組 twoDimension()
* @param arr數組參數
*/
function twoDimension( arr ){
// 第一層for循環遍歷第一維度數組
for( var i = 0; i < arr.length ; i++ ){
// 第二層for循環遍歷第二維度數組
for( var j = 0; j < arr[i].length ; j++ ){
document.write(arr[i][j]+"被遍歷了!" +"<br>");
}
}
}
// 驗證
var arr_demo3 = [ ["a","b","c","d"] , ["e","f","g"] , ["h","i"],["j","k"] ];
twoDimension( arr_demo3 );
5.取得二維數組中數組元素長度最長的數組
/**取得二維數組中數組元素長度最長的元素maxLength()
* @param arr數組參數
*/
function maxLength( arr ){
var i = 0;
for( var j = 1 ; j < arr.length ; j++ ){
if( arr[i].length < arr[j].length ){
i = j;
}
}
return i;
}
// 驗證
var arr_demo4 = [ ["a","b","c","d"] , ["e","f","g",1,2,3,4,5,6] , ["h","i"],["j","k"] ];
console.log( maxLength( arr_demo4 ) );
console.log( arr_demo4[ maxLength(arr_demo4) ].length );
6.取得數組中數值最大的元素
/**max()取得數組中值最大的元素
* @param arr 傳入任意數組
*/
function max( arr ){
var i = 0 ;
// 用for循環遍歷 比較
for( var j = 1 ; j < arr.length ; j++ ){
if( arr[j] > arr[i] ){
i = j;
}
}
return arr[i];
}
// 驗證
var arr_demo2 = [10,8,50,28,51,5];
max( arr_demo2 );
console.log( max( arr_demo2 ) ); //51