返回

使用 JavaScript 单行代码玩转 11 个惊人技巧

前端

前言

向往用更少的代码编写出能满足业务需求的 JavaScript 程序?如果答案是肯定的,那么本文将带你一窥 JavaScript 单行代码的奥秘,让你对优雅高效的代码表达惊叹。

1. 交换变量的值

需要交换两个变量的值,常规的做法是使用一个临时变量来辅助交换,而单行代码可以做到无需临时变量即可完成交换。看下面的代码:

[a, b] = [b, a];

2. 随机生成整数

使用 Math.random() 函数可以轻松地生成随机数,但如果想生成一个随机整数,就需要一些技巧。来看看这行单行代码:

Math.floor(Math.random() * (max - min + 1)) + min;

3. 判断回文

判断一个字符串是否是回文,即正反读都相同,同样可以用单行代码实现:

str === str.split('').reverse().join('');

4. 求数组的最大值

想要求出一个数组中的最大值,可以使用 Math.max() 函数,而单行代码同样可以轻松搞定:

Math.max.apply(null, arr);

5. 数组去重

在 JavaScript 中,使用 Set 数据结构可以轻松实现数组去重,而用单行代码同样可以实现:

[...new Set(arr)];

6. 字符串反转

字符串反转也是一个常见的问题,常规做法是使用 for 循环,而单行代码同样可以轻松实现:

str.split('').reverse().join('');

7. 数组排序

数组排序是另一个常见问题,通常使用 sort() 函数,而单行代码同样可以实现:

arr.sort((a, b) => a - b);

8. 数组过滤

想要过滤出数组中的奇数元素,可以使用 filter() 函数,而单行代码同样可以实现:

arr.filter((item) => item % 2 !== 0);

9. 数组映射

想要将数组中的每个元素都乘以 2,可以使用 map() 函数,而单行代码同样可以实现:

arr.map((item) => item * 2);

10. 数组化简

想要将数组中的所有元素相加,可以使用 reduce() 函数,而单行代码同样可以实现:

arr.reduce((acc, curr) => acc + curr, 0);

11. 函数柯里化

函数柯里化是将一个函数的部分参数预先固定,使之成为一个新的函数。这在函数式编程中很常见。下面是一行单行代码实现的柯里化函数:

const curry = (fn) => (...args) => (args.length >= fn.length ? fn(...args) : curry(fn.bind(null, ...args)));

结语

以上 11 个 JavaScript 单行代码技巧,展示了如何用简单优雅的代码解决常见问题。希望这些技巧能激励你探索 JavaScript 的更多可能性,在编程的世界里自由翱翔。