2019-5-24 JS基础算法题(二)

记录在FreeCodeCamp中遇到的Javascript基础算法题

11.比较字符串

如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。
举例,["hello", "Hello"] 应该返回true,因为在忽略大小写的情况下,第二个字符串的所有字符都可以在第一个字符串找到。

  1. function mutation(arr)
  2. for(var i=0;i<arr[1].length;i++){ 
  3. if(arr[0].toLowerCase().indexOf(arr[1][i].toLowerCase()) < 0){ 
  4. return false
  5. return true
  6.  
  7. mutation(["hello", "hey"]); 

知识点:string..indexOf()

12.过滤数组假值

删除数组中的所有假值。
在JavaScript中,假值有falsenull0""undefinedNaN

  1. function bouncer(arr)
  2. arr = arr.filter(function(item)
  3. return Boolean(item) === true
  4. }); 
  5. return arr; 
  6.  
  7. bouncer([7, "ate", "", false, 9]); 

知识点:Boolean Objects,Array.filter()

13.摧毁数组

实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。

  1. function destroyer(arr)
  2. var args = Array.from(arguments); 
  3. args.splice(0,1); 
  4. arr = arr.filter(function(item)
  5. if(args.indexOf(item)<0){ 
  6. return item; 
  7. }); 
  8. return arr; 
  9.  
  10. destroyer([1, 2, 3, 1, 2, 3], 2, 3); 

知识点:Arguments object

14.数组排序并找出元素索引

先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引

  1. function where(arr, num)
  2. arr.push(num); 
  3. arr.sort(function(a,b)
  4. return a-b; 
  5. }); 
  6. var index = arr.indexOf(num); 
  7. return index; 
  8.  
  9. where([40, 60], 50); 

知识点:Array.sort()

15.凯撒密码

风靡全球的凯撒密码Caesar cipher,又叫移位密码。
移位密码也就是密码中的字母会按照指定的数量来做移位。
一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。
写一个ROT13函数,实现输入加密字符串,输出解密字符串。

所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。

  1. function rot13(str) { // LBH QVQ VG! 
  2. var newWord = ""
  3. for (var i = 0; i < str.length; i++) { 
  4. var N = 13
  5. var wordIndex = str.charCodeAt(i); 
  6. if (wordIndex + N > 90) { 
  7. N = N - 26
  8. if (wordIndex > 90 || wordIndex < 65) { 
  9. newWord += str[i]; 
  10. } else
  11. newWord += String.fromCharCode(wordIndex + N); 
  12. return newWord; 
  13.  
  14. rot13("SERR PBQR PNZC"); // FREE CODE COMP 

知识点:String.charCodeAt(),String.fromCharCode()

16.Sum All Numbers in a Range

一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。

  1. function sumAll(arr)
  2. function add(runningTotal,currentValue)
  3. return runningTotal+currentValue; 
  4. var min = Math.min(arr[0],arr[1]); //返回一组数中的最小值; 
  5. var max = Math.max(arr[0],arr[1]); //返回一组数中的最大值; 
  6.  
  7. var i = min + 1
  8. while(i < max ){ 
  9. arr.push(i); 
  10. i++; 
  11. }  
  12. return arr.reduce(add); //累加 
  13.  
  14. sumAll([1, 4]); 
  15.  

知识点:Math.max(),Math.min(),Array.reduce()

posted @ 2019-05-24 15:05  MandyCheng  阅读(231)  评论(0编辑  收藏  举报