W3Cschool 初级脚本算法

初级脚本算法

翻转字符串算法挑战

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

阶乘算法挑战

function factorialize(num) {
    let y = 1;
    for(let i = 1; i <= num ;i ++){
        y *= i;
    }
    num = y;
    return num;
}
factorialize(5);

回文算法挑战

function palindrome(str) {
    let myStr = str;
    let check = myStr.replace(/[\W|_]|" "/g,"");
    if (check.toLowerCase() === check.split("").reverse().join("").toLowerCase()){
        return true;
    } else {
        return false;
    }
}
palindrome("0_0 (: /-\ :) 0_0");

寻找最长的单词算法挑战

function findLongestWord(str) {
    let myStr = str.split(" ");
    let myMax = myStr[0].length;
    for(let i = 1 ; i < myStr.length ; i ++){
        if(myMax < myStr[i].length){
            myMax = myStr[i].length; 
        }
    }
    return myMax;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

设置首字母大写算法挑战

function titleCase(str) {
        let arr = str.split(' ');
        for (let i = 0 ; i < arr.length;i ++) {
            arr[i] = arr[i].split('');
            for (let j = 0; j <arr[i].length;j++){
                if (j === 0) {
                    arr[i][j] = arr[i][j].toUpperCase();
                } else {
                    arr[i][j] = arr[i][j].toLowerCase();
                }
            }
            arr[i] =arr[i].join('');
        }
        str = arr.join(' ');
        return str;
}
titleCase("I'm a little tea pot");

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

function largestOfFour(arr) {
        let myArr = arr;
        let max = [];
        for (let i = 0; i < myArr.length; i++) {
             max[i] = myArr[i].reduce(function (a,b) {
                return a>b?a:b;
            })
        }
        arr = max;
        return arr;
    }
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

确认末尾字符算法挑战

function confirmEnding(str, target) {
    let targetLength = target.length;
    return str.substring(str.length-targetLength) === target ? true:false;
}
confirmEnding("Bastian", "n");

重复操作算法挑战

function repeat(str, num) {
    if (num < 0) {
        str = '';
    } else {
        let myStr = str;
        for(let i =1; i < num ; i ++) {
            str += myStr;
        }
    }
    return str;
}
repeat("abc", 3);

字符串截取算法挑战

function truncate(str, num) {
    let strLength = str.length;
    if (num <= 3) {
        let letterStr = str.substring(0,num) + '...';
        str = letterStr;
    } else {
        if (strLength <= num) {
            str = str.substring(0,num);
        } else {
            let moreStr = str.substring(0,num-3)+'...';
            str = moreStr;
        }
    }
    return str;
}
truncate("A-tisket a-tasket A green and yellow basket", 11);

数组分割算法挑战

function chunk(arr, size) {
    let myArr = []
    let bitArr = [];
    for (;arr.length >=1; ) {
        console.log(arr.length);
        bitArr = arr.splice(0,size);
        myArr.push(bitArr);
    }
    arr = myArr;
    return arr;
}

chunk(["a", "b", "c", "d"], 2);

数组截断算法挑战

function slasher(arr, howMany) {
    arr.splice(0,howMany);
    return arr;
}
slasher([1, 2, 3], 2);

数组查询算法挑战

function mutation(arr) {
    let firstStr = arr[0].toLowerCase();
    let lastStr = arr[1].toLowerCase().split('');
    let flot = true;       //标志位
    for (let i = 0 ;i < lastStr.length; i ++) {
        if (firstStr.indexOf(lastStr[i]) === -1) {
            flot = false;
            break;
        }
    }
    return flot;
}
mutation(["hello", "hey"]);

删除数组中特定值算法挑战

function bouncer(arr) {
    let myArr = [];
    for (let i = 0; i< arr.length; i ++) {
        if (arr[i] ) {
            myArr.push(arr[i]);
        }
    }
    arr = myArr;
    return arr;
}
bouncer([7, "ate", "", false, 9]);

去除数组中任意多个值算法挑战

function destroyer(arr) {
    let arg = Array.prototype.slice.call(arguments);//将伪数组转换成数组
    let parameterList  = arg.slice(1);
    let myArr = arg[0].filter(function (item) {
        let flot = false;
        if (parameterList.indexOf(item) === -1) {
            flot = true;
        }
        return flot;
    });
    arr = myArr;
    return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

数组排序并插入值算法挑战

function where(arr, num) {
        let myArr = arr.sort((a,b)=>{
            return a-b;
        });
        for (let i = 0 ;i < myArr.length; i ++) {
            if( myArr[i] > num) {
                myArr.splice(i,0,num);
                break;
            }
             if (i === myArr.length - 1) {
                 myArr.push(num);
                 break;
             }
        }
        num = myArr.indexOf(num);
        return num;
    }
where([40, 60], 50);

位移密码算法挑战

function rot13(str) {
    let reg = /[A-Z]/; //定义一个正则表达式
    let result;         //str[i] 单个字符比较的结果
    const translateNumber = 13; //定义一个常量
    let eachStr;
    let eachNumber;
    let myStr = '';
    for (let i = 0; i < str.length; i++) {
        eachStr = str.charAt(i);
        result = reg.test(eachStr);
        if ( result ) {
            eachNumber = eachStr.charCodeAt()+translateNumber;
            if (eachNumber > 90) {
                eachNumber = 64 + (eachNumber - 90)  ;
            }
            eachStr = String.fromCharCode(eachNumber);
        }
        myStr += eachStr;
    }
    str = myStr;
    return str;
}
rot13("SERR PBQR PNZC");

时间:2019年3月16日17:00:21

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值