共计 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]