【javascript 面試筆試】1、幾道筆試題


今天想起來幾道javascript的面試題,大家做做看看,有別的思路可以在下面寫出來,大家交流一下

(1) 將多維數組轉化成一個一位數組,例如[1,[2,3],[4,5,[6,7]]]轉化成[1,2,3,4,5,6,7],答案在下面,主要就是利用遞歸

function test(array){
    var newArray = [];
    for (var i=0,length = array.length - 1; i <= length; i++) {
        if(array[i] instanceof Array){//判斷是不是數組
            newArray = newArray.concat(test(array[i]));//遞歸調用
        }else{
            newArray.push(array[i]);
        }
    }; 
    return newArray;
}

(2) 求數組的最大維數,即一共嵌套了多少層,例如[1,2,[3,[4,5,[6]],[7,[8]]]] 一共嵌套了4層,還是利用遞歸,主要代碼在下面

function getDim(array){
    var dim = [];
    for (var i =0,length = array.length - 1; i <= length; i++) {
        if(array[i] instanceof Array){
            dim[i] = getDim(array[i]) + 1;//是數組就加1
        }else{
            dim[i] = 1;
        }
    };
    return (dim.sort(function(a,b){return a-b})).pop();//返回最大的維數
    //或者這樣
    //return Math.max.apply(null,dim);
}

(3)查找字符串中出現最多的字符和個數?   例如:sdjksfssscfssdd  -> 字符最多的是s,出現了7次,這個主要就是利用replace函數來實現的,還可以用普通的方式

var str = "sdjksfssscfssdd";
str = str.split("").sort().join("");
var count = 0;
var val;
str.replace(/(\w)\1*/g,function(arg0,arg1){
    if(arg0.length > count){
      count = arg0.length;
      val = arg1;
    }
});    
console.log(val+" 出現了"+count+" 次");

 這個就是先按照字字母排序,排成cdddffjksssssss這樣的形式,之后找出重復次數最多的字母。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM