关于前端:22个有用的JavaScript单行程序

4次阅读

共计 4892 个字符,预计需要花费 13 分钟才能阅读完成。

全世界有超过 1000 万的 Javascript 开发人员,而且这个数字每天都在减少。只管 JavaScript 更闻名的是它的动静个性,但它也有许多其余很棒的个性。在这篇博客中,咱们将看到 20 个你应该晓得的 JavaScript 单行程序。

1. 随机 ID 生成

当你在进行原型设计并须要惟一的 id 时,这能够成为你的首选性能。

const a = Math.random().toString(36).substring(2);
console.log(a)
----------------------------
72pklaoe38u

2. 生成范畴内的随机数

在很多状况下,咱们须要在一个范畴内生成一个随机数。Math.random 函数能够帮忙咱们生成随机数,而后将其转换为所需的范畴。

max = 20
min = 10
var a = Math.floor(Math.random() * (max - min + 1)) + min;
console.log(a)
-------------------------
17

3. 随机排列数组 (洗牌)

在 JavaScript 中,咱们没有一个模块,因为 python 有 random.shuffle(),但还是有一种办法能够在一行代码中洗牌一个数组。

var arr = ["A", "B", "C","D","E"];
console.log(arr.slice().sort(() => Math.random() - 0.5))
------------------------------
['C', 'B', 'A', 'D', 'E']

4. 获取随机布尔值

Javascript 中的 Math.random 函数可用于生成范畴之间的随机数。要生成一个随机布尔值,咱们须要随机获取一个介于 0 到 1 之间的数字,而后查看它是否大于或小于 0.5。

const randomBoolean = () => Math.random() >= 0.5;
console.log(randomBoolean());
---------------------------------------
false

5. 生成随机十六进制代码

您能够应用这个一行程序挑战本人作为 web 开发人员的能力。这个一行程序将生成一个随机的十六进制代码。您能够应用一行程序生成 3 - 6 种颜色代码,这将为您创立一个色彩托盘。

console.log('#' + Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, '0'));

------------------1st Run------------
#48facd
------------------2nd Run-------------
#93d806
------------------3rd Run-------------
#9072f9

6. 反转字符串

反转字符串有很多办法,但这是我在互联网上找到的最简略的办法之一。

const reverse = str => str.split('').reverse().join('');
console.log(reverse('javascript'));
----------------------------------------
tpircsavaj

7. 替换两个变量

上面的代码展现了一些简略的办法来替换两个变量,而不须要应用第三个变量,只须要一行代码。

a = 5
b = 7
--------- 办法 1---------
b = [a, a = b][0]; // One Liner 
---------- 办法 2-----------
[a,b] = [b,a];
console.log("A=",a)
console.log("B=",b)

8. 多变量调配

像 Python 一样,JavaScript 还能够应用这种奇妙的解构技术在同一行代码中同时调配多个变量。

var [a,b,c,d] = [20,14,30,"COD"]
console.log(a,b,c,d)
------------------------------------
20 14 30 COD

9. 查看偶数和奇数

有很多办法能够做到这一点,最简略的办法之一就是应用箭头函数并只用一行编写整个代码。

const isEven = num => num % 2 === 0;
console.log(isEven(2));
---------------------------------
true
console.log(isEven(3));
----------------------------------
false

10.FizzBuzz

这个问题是用来查看程序员外围的驰名面试问题之一。在这个测试中,咱们须要编写一个程序来打印从 1 到 100 的数字。但如果是 3 的倍数,则打印“Fizz”而不是数字,如果是 5 的倍数,则打印“Buzz”。

for(i=0;++i<10;console.log(i%5?f||i:f+'Buzz'))f=i%3?'':'Fizz'
----------------------------------
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz

11. 回文

回文是一个字符串或数字,当它被反转时看起来完全相同。例如:abba,121 等。

const isPalindrome = str => str === str.split('').reverse().join('');

result = isPalindrome('abcba');
console.log(result)
-----------------------------------
true

result = isPalindrome('abcbc');
console.log(result)
---------------------------------
false

12. 查看数组中的所有元素是否都满足特定条件

const hasEnoughSalary = (salary) => salary >= 30000
const salarys = [70000, 19000, 12000, 30000, 15000, 50000]
result = salarys.every(hasEnoughSalary) 
console.log(result)
-------------------------------
false
const salarys = [70000, 190000 ,120000, 30000, 150000,50000]
result = salarys.every(hasEnoughSalary) // Results in false
console.log(result)
---------------------------------
true

13. 计算两个给定日期之间的天数

const days = (date, otherDate) => Math.ceil(Math.abs(date - otherDate) / (86400000));
result = days(new Date('2020-04-15'), new Date('2021-01-15'));
console.log(result)
--------------------------------------------------------
275

为了计算两个日期之间的天数,咱们首先找到两个日期之间的绝对值,而后用 86400000 除以它,它等于一天内的毫秒数,最初,咱们四舍五入并返回后果。

14. 将字符串转换为数字

将字符串转换为数字的一种非常简单的办法是应用类型转换。

toNumber = str => +str;
toNumber = str => Number(str);
result = toNumber("2");
console.log(result)
console.log(typeof(result))
----------------------------------
2
number

15. 合并多个数组

const cars = ['🚓', '🚗'];
const trucks = ['🚚', '🚛'];
----- 办法 1 -------
const combined = cars.concat(trucks);
console.log(combined)
--------------------------------------------------
['🚓', '🚗', '🚚', '🚛']
----- 办法 2 --------
const combined = [].concat(cars,trucks);
console.log(combined)
--------------------------------------------------
['🚓', '🚗', '🚚', '🚛']

16. 将数字截断为固定的小数点

借助 Math.pow() 你能够将数字截断为某个小数点的办法。

const toFixed = (n, fixed) => ~~(Math.pow(10, fixed) * n) / Math.pow(10, fixed);
-----------------------------------------------------------------
toFixed(25.198726354, 1);       // 25.1
toFixed(25.198726354, 2);       // 25.19
toFixed(25.198726354, 3);       // 25.198
toFixed(25.198726354, 4);       // 25.1987
toFixed(25.198726354, 5);       // 25.19872
toFixed(25.198726354, 6);       // 25.198726

17. 滚动到页面顶部

window.scrollTo() 办法能够帮忙你实现工作。它须要滚动到页面上该地位的 x 和 y 坐标。如果将它们设置为(0,0),它将滚动到页面顶部。

const goToTop = () => window.scrollTo(0, 0);
goToTop();

18. 将华氏温度转换为摄氏温度 (反之亦然)

无论抉择华氏温度还是摄氏温度,将所有温度参数都转换为一个单位始终是一个更好的主见。

const celsiusToFahrenheit = (celsius) => celsius * 9/5 + 32;
const fahrenheitToCelsius = (fahrenheit) => (fahrenheit - 32) * 5/9; 
--------Examples-------
celsiusToFahrenheit(15);    // 59
celsiusToFahrenheit(-20);   // -4
fahrenheitToCelsius(59);    // 15
fahrenheitToCelsius(32);    // 0

19. 特定 Cookie 的值

cookie = name => `; ${document.cookie}`.split(`; ${name}=`).pop().split(';').shift();
cookie('_ga');
// Result: "GA1.3.974792242.1509957189"

20. 将文字复制到剪贴板

将文本复制到剪贴板十分有用,也是一个很难解决的问题。您能够在 Internet 上找到各种解决方案,然而上面的解决方案可能是最小,最聪慧的解决方案之一。

const copyTextToClipboard = async (text) => {await navigator.clipboard.writeText(text)
}

21. 删除 HTML 标签

这种单行代码应用正则表达式删除了任何看起来像 <xxx> 的字符串,其中 x 能够是任何字符,包含 /

"<b>A</b>".replace(/<[^>]+>/gi, "");

22. 克隆数组

它将返回原始数组的正本。

oldArray = [1,4,2,3]
var newArray = oldArray.slice(0);
console.log(newArray)
------------------------------------
[1,4,2,3]
正文完
 0