【javascript面接筆記試験】1、いくつかの筆記試験問題

3568 ワード

今日はいくつかのjavascriptの面接問題を思い出します.みんなでやってみてください.他の考えがあります.下に書いてください.皆さん、交流してください.
(1)多次元配列を一桁の配列に変換します.例えば、[1,[2,3],[4,5,[6,7]]を[1,2,3,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)配列の最大次元を求めて、つまり全部で何層がはまっていますか?
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)文字列の中で最も多い文字と個数を検索しますか?  例えば:sdjksfssscfdd  -> 文字数が一番多いのは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+"  ");
 これはアルファベットを先に並べて、cdddffjksssssという形にして、繰り返しの一番多い文字を探します.