JavaScript 專項練習:函數篇(一)

引言

在學習 JavaScript 的過程當中看了很多書,但卻不多有專項練習,所以開這樣一個專題,但願能在練習中複習鞏固所學的知識~ :)web

函數篇(一)

本篇主要考察編寫函數的技能和基本知識,同時也是對 JavaScript 標準庫函數的練習。函數

1. 寫一個函數用來反轉數字學習

reverseNumber(12345); // 54321

2. 寫一個函數來檢測傳入的字符串是否爲迴文ui

isPalindrome('hello'); // false
isPalindrome('madam'); // true

3. 寫一個函數對傳入的字符串輸出全部子字符串組合(注意去重)code

substrings('dog'); // ['d', 'do', 'dog', 'o', 'og', 'g']

4. 寫一個函數對傳入的字符串從新按字母排序排序

reorderStr('webmaster'); // abeemrstw

5. 寫一個函數對傳入的字符串中每一個單詞的首字母大寫ip

upperWords('the quick brown fox'); // The Quick Brown Fox

6. 寫一個函數找出傳入的字符串中最長的單詞字符串

findLongest('Web Development Tutorial'); // Development

答案

如下給出個人解法,期待能有更好的答案。get

// 1. 寫一個函數用來反轉數字

(function(){
  'use strict';
  function reverseNumber(num) {
    if(typeof num !== 'number') {
      throw "Pls input a number!";
    }
    var result = num.toString().split('').reverse().join('');
    return +result;
  }
  
  console.log(reverseNumber(12345));
})();
// 2. 寫一個函數來檢測傳入的字符串是否爲迴文

(function(){
  'use strict';
  function isPalindrome(str) {
    if(typeof str !== 'string') {
      throw "Pls input a string!";
    }
    var tmp = str.split('').reverse().join('');
    return tmp === str;
  }
  
  console.log(isPalindrome('hello'));
  console.log(isPalindrome('madam'));
})();
// 3. 寫一個函數對傳入的字符串輸出全部子字符串組合

(function(){
  'use strict';
  function substrings(str) {
    if(typeof str !== 'string') {
      throw "Pls input a string!";
    }
    var result = [];
    function next(idx) {
      var i, n = str.length - idx;
      for(i=1; i<=n; i++) {
        add(str.substr(idx, i));
      }
      if(idx < str.length){
        next(idx+1);
      }
    }
    function add(item) {
      if(result.indexOf(item)<0) {
        result.push(item);
      }
    }
    next(0);
    return result;
  }
  
  console.log(substrings('dog'));
})();
// 4. 寫一個函數對傳入的字符串從新按字母排序

(function(){
  'use strict';
  function reorderStr(str) {
    if(typeof str !== 'string') {
      throw "Pls input a string!";
    }
    return str.split('').sort().join('');
  }
  
  console.log(reorderStr('webmaster'));
})();
// 5. 寫一個函數對傳入的字符串中每一個單詞的首字母大寫

(function(){
  'use strict';
  function upperWords(str) {
    if(typeof str !== 'string') {
      throw "Pls input a string!";
    }
    return str.split(' ').map(upperFirstLetter).join(' ');
    
    function upperFirstLetter(str) {
      return str.charAt(0).toUpperCase().concat(str.substr(1));
    }
  }
  
  console.log(upperWords('the quick brown fox'));
})();
// 6. 寫一個函數找出傳入的字符串中最長的單詞

(function(){
  'use strict';
  function findLongest(str) {
    if(typeof str !== 'string') {
      throw "Pls input a string!";
    }
    var items = str.split(' ');
    return getMax(items);
    
    function getMax(arr) {
      var i, max = 0, n=arr.length;
      for(i = 0; i < n; i++) {
        if(arr[i].length > arr[max].length) {
          max = i;
        }
      }
      return arr[max];
    }
  }
  
  console.log(findLongest('Web Development Tutorial'));
})();
相關文章
相關標籤/搜索