JS中幾種常見的數組算法(前端面試必看)

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
相關文章
相關標籤/搜索