1.如果给定的字符串是回文,返回true
,反之,返回false
。
palindrome(回文)是指一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样。
function palindrome(str) {
str = str.replace(/[^A-Za-z0-9]/g, '').toLowerCase().split('');
var t = str.every(function(v,i){
return v == str[str.length-i-1];
},str);
return t;
}
2.返回提供的句子中最长的单词的长度。
返回值应该是一个数字。
function findLongestWord(str) {
var s=str.split(' ');
var l=0;
for (var i =0; i<s.length; i++) {
if(s[i].length>l){
l=s[i].length
}
}
return l;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
3.返回一个字符串,确保字符串的每个单词首字母都大写,其余部分小写。
function titleCase(str) {
var newStr = str.split(" ");
for(var i=0; i<newStr.length; i++){
newStr[i] = newStr[i].slice(0, 1).toUpperCase() + newStr[i].slice(1).toLowerCase();
}
return newStr.join(" ");
}
titleCase("I'm a little tea pot");
4. 在右边的大数组中包含了4个小数组,请分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组。
function largestOfFour(arr) {
// You can do this!
var newArr=[];
var max=0;
for (var i = 0; i <arr.length; i++) {
for(var j=0;j<arr[i].length;j++){
if (arr[i][j]>max) {
max=arr[i][j];
}
}
newArr[i]=max;
max=0;
}
return newArr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
5.检查一个字符串(str
)是否以指定的字符串(target
)结尾。
function confirmEnding(str, target) {
// "Never give up and good luck will find you."
// -- Falcor
if(target === str.substr(-target.length)){
return true;
}else{
return false;
}
}
confirmEnding("Bastian", "n");
6.
循环拼接一个指定的字符串
num
次,如果
num
是一个负数,则返回一个空字符串。
function repeat(str, num) {
// repeat after me
var newstr="";
if (num<=0) {
return "";
} else {
for (var i = 0; i < num; i++) {
newstr+=new String(str);
}
return newstr;
}
}
repeat("abc", 3);
7.
如果字符串的长度比给定的参数num
长,则把多余的部分用...
来表示。
切记,插入到字符串尾部的三个点号也会计入字符串的长度。
然而,如果指定的参数num
小于或等于3,则添加的三个点号不会计入字符串的长度。
function truncate(str, num) {
var newStr= "";
if(str.length>num){
if(num<=3){
newStr =str.slice(0,num)+"...";
}
else{
newStr =str.slice(0,num-3)+"...";
}
return newStr;
}
else{
return str;
}
}
truncate("A-tisket a-tasket A green and yellow basket", 11);
8.
编写一个函数,把一个数组arr
按照指定的数组大小size
分割成若干个数组块。
例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];
chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];
8.1:
function chunk(arr,size){
var arr1=[];
for(var i=0;i<arr.length;i=i+size){
var arr2=arr;
arr1.push(arr2.slice(i,i+size));
}
return arr1;
}
chunk(["a", "b", "c", "d"], 2);
8.2:
function chunk(arr,size){
var chunk=[];
while(arr.length>0){
chunk.push(arr.splice(0,size));
};
return chunk;
}
chunk(["a", "b", "c", "d"], 2);
9.
返回一个数组被截断
n
个元素后还剩余的元素,从索引0开始
截断
。
function slasher(arr, howMany) {
// it doesn't always pay to be first
return arr.slice(howMany);
}
slasher([1, 2, 3], 2);
10.
如果数组第一个字符串元素包含了第二个字符串元素的所有字符,则函数返回true。
举例,["hello", "Hello"]
应该返回true,因为在忽略大小写的情况下,第二个字符串的所有字符都可以在第一个字符串找到。
["hello", "hey"]
应该返回false,因为字符串"hello"并不包含字符"y"。
["Alien", "line"]
应该返回true,因为"line"中所有字符都可以在"Alien"找到。
function mutation(arr){
for (var i = 0 ; i < arr[1].length ; i++){
if(arr[0].toUpperCase().indexOf(arr[1].charAt(i).toUpperCase()) == -1){
return false;
}
}
return true;
}
mutation(["hello", "hey"]);
11.
删除数组中的所有的假值。
在JavaScript中,假值有false
、null
、0
、""
、undefined
和NaN
。
function bouncer(arr) {
// Don't show a false ID to this bouncer.
return arr.filter(d=>d);
}
bouncer([7, "ate", "", false, 9]);
12.
实现一个 destroyer 函数,第一个参数是初始数组,
后跟一个或多个参数。
从初始数组中删除与这些参数具有相同值的所有元素。
function destroyer() {
var argu = arguments
var arr1 = argu[0];
var arr2 = arr1.filter(function(val) {
var a = true;
for (var i = 1; i < argu.length; i++) {
if (val === argu[i]) {
a = false;
}
}
return a;
})
return arr2
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
13.
先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。
举例:where([1,2,3,4], 1.5)
应该返回 1
。因为1.5
插入到数组[1,2,3,4]
后变成[1,1.5,2,3,4]
,而1.5
对应的索引值就是1
。
同理,where([20,3,5], 19)
应该返回 2
。因为数组会先排序为 [3,5,20]
,19
插入到数组[3,5,20]
后变成[3,5,19,20]
,而19
对应的索引值就是2
。
function where(arr, num) {
// Find my place in this sorted array.
//注意sort() 排序规则
arr.sort(function(a,b){
return a- b;
});
for(var i =0;i<arr.length;i++){
if(arr[i]>num | arr[i] == num){
return i;
}
}
return arr.length;
}
14.
下面我们来介绍著名的凯撒密码Caesar cipher
,又叫移位密码。
移位密码也就是密码中的字母会按照指定的数量来做移位。
一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔'O',以此类推。
写一个ROT13函数,实现输入加密字符串,输出解密字符串。
所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,就跳过它们。
function rot13(str) { // LBH QVQ VG!
var str1 = [];
for (var i = 0; i < str.length; i++ ) {
var num = str[i].charCodeAt();
if (num >= 65 && num <= 77)
num = num + 13;
else if (num > 77 && num < 91)
num = num - 13;
str1.push(String.fromCharCode(num));
}
return str1.join("");
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");