初级脚本算法

it2023-01-14  56

初级脚本算法

 

1.翻转字符串算法挑战

实战翻转字符串算法

先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,然后把数组转化成字符串

split() 方法是将一个String对象分割成字符串数组,使用指定的分隔符将一个字符串分割成一个字符串数组。 reverse() 方法颠倒数组中元素的位置。第一个元素会成为最后一个,最后一个会成为第一个。 join() 方法将数组(或一个类数组对象)的所有元素连接到一个字符串中,该方法并不会改变原来的数组 简单的来实现就是用str.split(’ ‘)按空格分割字符串,arr.reverse()来翻转数组,最后用arr.join(’ ‘)连接

function reverseString(str) { return str.split('').reverse().join(''); } reverseString("hello"); function reverseString(str) { var strarr = str.split(""); strarr = strarr.reverse(); str = strarr.join(""); return str; } reverseString("hello");  

 

2.阶乘算法挑战


计算所提供整数的阶乘

如果使用字母n代表一个整数,则阶乘是所有小于或等于n的整数的乘积

阶乘通常简写成 n!

例如: 5! = 1 * 2 * 3 * 4 * 5 = 120

 

function factorialize(num) { if(num==1||num==0){ return 1; }else if(num>1){ return num*factorialize(num-1); } } ​ factorialize(5);

 

3.回文算法挑战

如果给定的字符串是回文,返回true,反之,返回false

palindrome(回文)是指一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样

注意:需要删除字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是不是回文

函数参数的值可以为"racecar","RaceCar"和"race CAR"

function palindrome(str) { ​ var s = str.replace(/[\W_]/g,""); //去掉多余的标点符号和空格 var arr = s.split(''); //将字符串转换成数组 arr = arr.reverse(); //翻转数组 var s1 = arr.join(''); //将翻转后的数组转换成字符串 return s.toLowerCase()==s1.toLowerCase(); } palindrome("eye");

 

4.寻找最长的单词算法挑战

返回提供的句子中最长的单词的长度

返回值应该是一个数字

function findLongestWord(str) { //以空格拆分字符串成字符数组 var arr = str.split(" "); //初始化最大字符串长度 var maxLength = 0; //循环判断每个字符的长度大小,把最大长度赋值给maxLength for(var i =0;i<arr.length;i++){ if(arr[i].length > maxLength){ maxLength = arr[i].length; } } return maxLength; } ​ findLongestWord("The quick brown fox jumped over the lazy dog");

 

5.设置首字母大写算法挑战

返回一个字符串,确保字符串的每个单词首字母都大写,其余部分小写

像'the'和'of'这样的连接符同理

使用到的方法函数:

toLowerCase()将一句话的所有字母转为小写

split()将一句话转换成字符串数组

toUpperCase()将每个单词的首字母转为大写

substring()截取单词中剩余的字母,然后拼接到大写字母之后

join()将数组里的每个单词重新拼成一句话

function titleCase(str) { var s=str.toLowerCase().split(" "); for(var i=0;i<s.length;i++){ s[i]=s[i][0].toUpperCase()+s[i].substring(1,s[i].length); } return s.join(" "); } ​ titleCase("I'm a little tea pot");

 

6.寻找数组中的最大值算法挑战

在右边的大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组

提示:可以用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素

function largestOfFour(arr) { var array = []; for (var i in arr) { array.push(arr[i].sort(function (a, b) { return b-a; })[0]); } return array; } largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

 

7.确认末尾字符算法挑战

检查一个字符串(str)是否以指定的字符串(target)结尾

如果是,返回true;如果不是,返回false

function confirmEnding(str, target) { if(target === str.substr(-target.length)){ return true; }else{ return false; } } ​ confirmEnding("Bastian", "n");

该方法的实现主要是用指定的字符串和字符串最后一部分进行比较,用到String对象中的substr()方法,该方法是从字符串中抽取字符

8.重复操作算法挑战

循环拼接一个指定的字符串 num次,如果num是一个负数,则返回一个空字符串

function repeat(str, num) { // repeat after me if(num==0){ return ""; }else{ var string=""; for (var i = 0; i <num; i++) { string=string+str; } } return string; } repeat("abc", 3);

 

9.字符串截取算法挑战

如果字符串的长度比给定的参数num长,则把多余的部分用...来表示

注意:插入到字符串尾部的三个点号也会计入字符串的长度

然而,如果指定的参数num小于或等于3,则添加的三个点号不会计入字符串的长度

function truncate(str, num) { // Clear out that junk in your trunk if(str.length <= num){ return str; //给定参数大于字符串长度,返回字符串本身 }else if(str.length > num && num <= 3){//三个点号不计入字符串长度 return str.slice(0, num) + "..."; }else if(str.length > num && num > 3){//三个点号计入字符串长度 return str.slice(0, num - 3) + "...";//用slice()方法将后三个字符去掉 } return str; } truncate("A-tisket a-tasket A green and yellow basket", 11);

 

10.数组分割算法挑战

编写一个函数,把一个数组arr按照指定的数组大小size分割成若干个数组块

例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];

chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];

function chunk(arr, size) { var rsArr = []; for(var i=0;i<arr.length;i+=size){ var tempArr=[]; for(var j=0;j<size&&i+j<arr.length;j++){ tempArr.push(arr[i+j]); } rsArr.push(tempArr); } return rsArr; } chunk(["a", "b", "c", "d"], 2);

 

最新回复(0)