令人惊艳的JS单行代码

1.计算阶乘和

const factorial = n => n === 0 ? 1 : n * factorial(n - 1);
console.log(factorial(4));

2.数组去重

const uniqueArray = array => [...new Set(array)];

console.log(uniqueArray([1,1,,2,2,,3,4,5,5]));//[1,undefined,2,3,4,5]

3.数组合并

const mergedArray = (target,arrays) => target.concat(...arrays);
console.log(mergedArray([1,2,3],[2,3,4]));// [1, 2, 3, 2, 3, 4]
console.log(mergedArray([1,2,3],[])); //[1, 2, 3]

4.判断数组元素唯一

const isUnique = array => array.length === new Set(array).size;
console.log(isUnique([1,2,3,1]));//false
console.log(isUnique([1,2,3]));//true

5.压缩字符串

const compressedString = str => str.replace(/(.)\1+/g, match => match[0] + match.length);
console.log(compressedString('abaaacadasd'));//aba3cadasd

6.斐波拉契前n项

const fibonacci = n => Array(n).fill().map((_, i, arr) => {arr[i] = i <= 1 ? i : arr[i - 1] + arr[i - 2]; return arr[i]});
console.log(fibonacci(10));//[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

7.求多个数组的交集

const intersection = arrays => arrays.reduce((acc, cur) => acc.filter(value => cur.includes(value)));

console.log(intersection([[1,2,3],[1,2],[2,3]]));//[2]

8.验证邮箱格式

const isValidEmail = email =>/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/.test(email);
console.log(isValidEmail('1020572432@qq.com'));//true
console.log(isValidEmail('102057242@q'));//false

9.数组去除假值

const truthyArray = array => array.filter(Boolean);
console.log(truthyArray([false,null,0,"",,1]));//[1]

//假值,如false,null,0,""和undefined

10.字符串转数字

const intValue = str=> +str;
console.log(intValue('3'));//3
console.log(intValue('false'));//NaN

11.统计数组元素出现的频次

const countOccurrences = array => array.reduce((acc, cur) => (acc[cur] ? acc[cur]++ : acc[cur] = 1, acc), {});
console.log(countOccurrences([1,2,3,4,5,6]));//{1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1}

12.日期格式化

const formattedDate = new Date().toISOString().slice(0, 10);
console.log(formattedDate);//2024-06-04

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值