引言
在学习 JavaScript 的过程中看了不少书,但却很少有专项练习,因此开这样一个专题,希望能在练习中复习巩固所学的知识~ :)
函数篇(一)
本篇主要考察编写函数的技能和基本知识,同时也是对 JavaScript 标准库函数的练习。
1. 写一个函数用来反转数字
reverseNumber(12345); // 54321
2. 写一个函数来检测传入的字符串是否为回文
isPalindrome('hello'); // false
isPalindrome('madam'); // true
3. 写一个函数对传入的字符串输出所有子字符串组合(注意去重)
substrings('dog'); // ['d', 'do', 'dog', 'o', 'og', 'g']
4. 写一个函数对传入的字符串重新按字母排序
reorderStr('webmaster'); // abeemrstw
5. 写一个函数对传入的字符串中每个单词的首字母大写
upperWords('the quick brown fox'); // The Quick Brown Fox
6. 写一个函数找出传入的字符串中最长的单词
findLongest('Web Development Tutorial'); // Development
答案
以下给出我的解法,期待能有更好的答案。
// 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'));
})();
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。