【一行流】JavaScript初级脚本算法编程实战(w3cschool)

前言

能用一行代码解决的问题为什么要写那么多行?刚好w3cschool的JavaScript初级脚本算法编程实战的题都比较简单,于是我闲着没事干就把这里面的题都用一行代码实现了(仅供娱乐,完全不考虑成本和可读性)。下面是代码

1.翻转字符串算法挑战

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

2.阶乘算法挑战

function factorialize(num) {
    return num<=1?1:num*factorialize(num-1);
}
factorialize(5);

3.回文算法挑战

function palindrome(str) {
    return str.replace(/[^0-9a-zA-Z]*/g,"").toLowerCase().split('').every((v,k,a)=>v==a[a.length-k-1])
}
palindrome("race car");

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

function findLongestWord(str) {
    return str.split(' ').map(x=>x.length).reduce((a,b)=>a>b?a:b)
}
findLongestWord("The quick brown fox jumped over the lazy dog");

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

function titleCase(str) {
    return str.toLowerCase().replace(/( |^)[a-z]/g,s=>s.toUpperCase());
}
titleCase("I'm a little tea pot");

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

function largestOfFour(arr) {
    return arr.map(x=>x.reduce((a,b)=>a>b?a:b))
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

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

function confirmEnding(str, target) {
    return str.substr(str.length-target.length,target.length)==target;
}
confirmEnding("Bastian", "n");

8.重复操作算法挑战

function repeat(str, num) {
    return Array.from({length:num},()=>str).join('')
}
repeat("abc", 3);

9.字符串截取算法挑战

function truncate(str, num) {
    return str.substr(0,num).concat(num>3?'':'...').replace(/.{3}$/,s=>str.length>num?'...':s)
}
truncate("A-", 1)

10.数组分割算法挑战

function chunk(arr, size) {
    return arr.map((v,k,a)=>a.slice(k,k+size)).filter((v,k)=>k%size===0)
}
chunk(["a", "b", "c", "d"], 2);

11.数组截断算法挑战

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

12.数组查询算法挑战

function mutation(arr) {
    return arr[1].toLowerCase().split('').every(s=>arr[0].toLowerCase().includes(s))
}
mutation(["hello", "hey"]);

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

function bouncer(arr) {
    return arr.filter(x=>x);
}
bouncer([7, "ate", "", false, 9]);

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

function destroyer(arr,...d) {
    return arr.filter(x=>!d.some(y=>y==x));
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

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

function where(arr, num) {
    return arr.concat(num).sort((a,b)=>a-b).indexOf(num);
}
where([40, 60], 50);

16.位移密码算法挑战

function rot13(str) { 
    return str.replace(/[A-Z]/g,x=>String.fromCharCode((c=x.charCodeAt())+13>'Z'.charCodeAt()?c+13-26:c+13));
}
rot13("SERR PBQR PNZC");
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值