在學習 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')); })();