zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    mac 程序 Access-JSON-Data
    第一个 mac 程序 Create-JSON-Model
    CATransform3D的m34使用
    超级好用的解析JSON数据的网站
    iOS设计模式
    iOS设计模式
    iOS设计模式
    iOS设计模式
    iOS设计模式
    iOS设计模式
  • 原文地址:https://www.cnblogs.com/MandyCheng/p/10918243.html
Copyright © 2011-2022 走看看