【1】Reverse a String
先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串。
Q1.思路:①'hello'.split(??);→['h','e','l','l','0'] ②Arr.reverse(); ③Arr.join();
A: 'hello'.split(''); 即可得到['h','e','l','l','0']
//第一遍,有问题
function reverseString(str) {
var arrayOfString = str.split();
var newArray = arrayOfString.reverse();
var stringOfArray = newArray.join();
return stringOfArray;
}
reverseString("hello");```
##正解☟
function reverseString(str) {
var newStr = str.split("").reverse().join("");
return newStr;
}
reverseString("hello");```
这个可以,Why??
function reverseString(str) {
return str.length ? reverseString(str.substr(1))+str.charAt(0) : "";
}
reverseString("hello");```
【2】Factorialize a Number
>计算一个整数的阶乘
如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积。阶乘通常简写成 n!例如: 5! = 1 * 2 * 3 * 4 * 5 = 120
#循环执行情况
i=1,sum=1\*1
i=2,sum=(1\*1)\*2
i=3,sum=(1\*1\*2)\*3
i=4,sum=(1\*1\*2\*3)\*4
i=5,sum=(1\*1\*2\*3\*4)*5
```
function factorialize(num) {
var sum = 1;
for(var i = 1;i<=num;i++){
sum *= i;
}
return sum;
}
factorialize(5);```
【3】Check for Palindromes
>如果给定的字符串是回文,返回true,反之,返回false。
如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)。
注意你需要去掉字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是否为回文。
函数参数的值可以为"racecar","RaceCar"和"race CAR"。
#??正则如何匹配标点符号(,和. )??
```
function palindrome(str) {
//Good luck!
var newStr = str.replace(/(,*)(\.*)(\s*)/gi,'');
if(str === str.reverse()){
return true;
} else {
return false;
}
}
palindrome("eye");```
Q:var re = /[\W_]/gi; i表示忽略大小写,为何不行??
```
function palindrome(str) {
var re = /[\W_]/g;
var lowRegStr = str.toLowerCase().replace(re,"");
var reverseStr = lowRegStr.split("").reverse().join("");
return reverseStr === lowRegStr;
}
palindrome("eye");```
【4】Find the Longest Word in a String
>找到提供的句子中最长的单词,并计算它的长度。
函数的返回值应该是一个数字。
#return max;位置有问题
#函数执行顺序??
```
function findLongestWord(str) {
var arr = str.split(" ");
var max = arr[0].length;
for(var i=0;i<arr.length;i++){
if(max <= arr[i].length){
max = arr[i].length;
}
return max;
}
}
findLongestWord("The quick brown fox jumped over the lazy dog");
```
```
function findLongestWord(str) {
var arr = str.split(" ");
var max = arr[0].length;
for(var i=0;i<arr.length;i++){
if(max <= arr[i].length){
max = arr[i].length;
}
}
return max;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
```