今天想起來幾道javascript的面試題,你們作作看看,有別的思路能夠在下面寫出來,你們交流一下javascript
(1) 將多維數組轉化成一個一位數組,例如[1,[2,3],[4,5,[6,7]]]轉化成[1,2,3,4,5,6,7],答案在下面,主要就是利用遞歸java
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這樣的形式,以後找出重複次數最多的字母。app