JavaScript算法编程基础
1.翻转字符串算法
function reverseString(str) { return str.split("").reverse().join(""); } reverseString("hello");
2.计算阶乘
function factorialize(num) { if(num>1){ return num*factorialize(num-1) } else{ return 1; } } factorialize(5);
3.如果给定的字符串是回文,返回true
,反之,返回false
function palindrome(str) { var str1 = str.toLowerCase(); var reg = /[\W\_]/g; var str2 = str1.replace(reg, ""); var str3 = str2.split(""); var str4 = str3.reverse(); var str5 = str4.join(""); return str2 === str5; } palindrome("eye");
4.寻找最长的单词,返回提供句子中最长的单词长度
function findLongestWord(str) { var arr = new Array(); arr = str.split(" "); var compare =0; var len = 0; for(var i=0;i<arr.length;i++) { len = arr[i].length; if(len>compare){ compare = len; } } return compare; } findLongestWord("The quick brown fox jumped over the lazy dog");
5.设置首字母大写返回一个字符串,确保字符串的每个单词首字母都大写,其余部分小写。
function titleCase(str) { var str1 =str.split(" "); for(var i=0; i<str1.length ;i++) { str1[i]= str1[i].slice(0,1).toUpperCase()+str1[i].slice(1).toLowerCase(); } return str1.join(" "); } titleCase("I'm a little tea pot");
6. 寻找数组中的最大值,大数组中包含了4个小数组,请分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组。
function largestOfFour(arr) { var newArr = []; for(var i=0; i<arr.length; i++) { newArr.push(Math.max.apply(Math,arr[i])) } return newArr; } largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
7.检查一个字符串是否以指定的字符串结尾。
function confirmEnding(str, target) { return str.substring(str.length-target.length) === target; } confirmEnding("Bastian", "n");
8.循环拼接一个指定的字符串 num
次,如果num
是一个负数,则返回一个空字符串
function repeat(str, num) { return num>0 ? str.repeat(num):""; } repeat("abc", 3);
9.字符串截取, 如果字符串的长度比给定的参数num
长,则把多余的部分用...
来表示。
function truncate(str, num) { if(str.length>num && num>3) { str = str.slice(0,num-3)+"..." } else if(str.length>num && num<=3) { str = str.slice(0,num) + "..." } else { str = str; } return str; } truncate("A-tisket a-tasket A green and yellow basket", 11);
10.数组分割,把一个数组arr
按照指定的数组大小size
分割成若干个数组块
function chunk(arr, size) { var arr1 = [] while(arr.length>0) { arr1.push(arr.splice(0,size)) } return arr1 } chunk(["a", "b", "c", "d"], 2);
11.数组截断, 返回一个数组被截断n
个元素后还剩余的元素,从索引0开始截断。
function slasher(arr, howMany) { var str = arr.slice(howMany) return str; } slasher([1, 2, 3], 2);
12.数组查询, 如果数组第一个字符串元素包含了第二个字符串元素的所有字符,则函数返回true
function mutation(arr) { if(arr.length>=2) { var str = arr[0].toLowerCase(); var str1 = arr[1].toLowerCase(); for(var i =0;i<str1.length;i++) { if(str.indexOf(str1.charAt(i))===-1) { return false; } } return true; } return arr; } mutation(["hello", "hey"]);
13.删除数组中的所有的假值
function bouncer(arr) { return arr.filter(Boolean); } bouncer([7, "ate", "", false, 9]);
14.去除数组中任意多个值,第一个参数是初始数组,后跟一个或多个参数。从初始数组中删除与这些参数具有相同值的所有元素。
function destroyer(arr) { var arr1 = arguments; for(i=1;i<arr1.length;i++) { arr = arr.filter(function(val){ return arr1[i]!==val; }) } return arr; } destroyer([1, 2, 3, 1, 2, 3], 2, 3);