一個簡單的js面試題

  在js羣裏看到有人發問,於是抱着練手的心態寫了答了幾個面試題,題目雖然不是太難,卻很考驗人的編程思維。汗顏,看了別人的答案後才發現自己好像笨了很多。 廢話不說了 ,上代碼。

1 要求 給一個數組的最後一個元素加1 結果大於10則給前一個元素加1 並設置當前元素值=0;前一個元素亦是如此,例如 

 var a=new Array(3,9);
     a[1]+1;
   a=[3,9];

 此題看似很簡單,只要最後一個元素等於10 就給錢一個元素加1,設置當前元素爲0就是了,但還有一種特殊一點的情況,就是當數組的所有元素都爲9時,還要在向數組內添加一個元素。我給出的答案如下:

    $(function () {
        add();
    })
        function add() {
            var a = [9,4];
            var b = a;
            var sum ;
            b[b.length - 1]=( b[b.length - 1] )+ 8;
            if (b[b.length - 1] >=10) {
                b[b.length - 1] = b[b.length - 1] - 10;
                var i = b.length - 2;
                while (i> -2) {
                    if (i != -1) {
                        sum = b[i] + 1;
                        if (sum >=10) {
                            b[i] = sum - 10;
                        } else {
                            b[i] = sum;
                            break;
                        }
                        i--;
                    } else {
                        a = [1];
                        a.push(b);
                        i--;
                    }
                }
            } else {
                a = b;
            }
            alert(a);
        }

看了別人寫的代碼,才發現自己吧問題複雜化了,寫了一堆代碼,如果使用js的unshift()函數會更好,向數組頭部添加一個或多個元素並返回新的數字長度。汗,自己js瞭解的少也不知道有這麼個方法。但這樣寫本質還是一樣的,個人覺得最正確的寫法應該是這樣:

//轉換整數後計算在轉爲數組
$.(function() {
 var num = [9,9,9,9,9],
  intA = parseInt(num.join(""));
 
 intA++;
 var newStr = intA.toString(),
  newArr = [];
 for(var i=0,l=newStr.length;i<l;i++) {
  newArr.push(parseInt(newStr[i]));
 }
 alert(newArr);
});

這個問題本來就是一個用數組模擬十進制加法的事,所以轉換成數字來計算是最直接簡單的。同時也發現一個問題,自己和別人的差距咋就這麼大捏?

還有一個查找一個字符串中“”個字符出現的次數的,例如'assddfsds'中a s d f 分別出現了幾次,當時寫了下但沒有保存,在這裏就不說了 有興趣的可以自己去看下,注意,只限js語法;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章