JavaScript 有很多实用例子,它们可以做很多强大的事情,在今天的文中,我们将分享一些 JavaScript 特别好用的代码,无论你是 JavaScript 新手还是经验丰富的开发人员,学习些新东西总是好的。
希望能帮助您解决一些日常开发中遇到的JavaScript 问题.
1.判断字符串是否为JSON格式
使用JSON.parse(str)进行判断,非JSON格式的它会报错,
所以要用try catch 正常的为true,异常的用false就可以判断是否为JSON格式
function isJSON_test(str) {
if (typeof str == 'string') {
try {
var obj = JSON.parse(str);
console.log('转换成功:' + obj);
return true;
} catch (e) {
console.log('error:' + str + '!!!' + e);
return false;
}
}
console.log('It is not a string!')
}
console.log(isJSON_test('["1","2"]')); //true
console.log(isJSON_test('{name:"123"}')); //false
console.log(isJSON_test('aaaa')); //false
2、生成一个范围内的随机数
使用 Math.random() 函数可以轻松地在 JavaScript 中获取随机值。
但是某个范围内的随机数呢?没有标准的 JavaScript 函数。下面的函数可以用来解决这个问题。
const randoms = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
3、切换布尔值
与其使用 if 语句来确定将布尔值设置为什么值,不如使用下面的函数。
const toggle = (value) => value = !value
4、 字符串大写
这是一个非常基本的功能,经常被使用。我们可以在这个函数中输入一个单词或一个完整的句子,只要它是一个字符串,可以让字母大写。
const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1)
5、检查变量是否为数组
有几种方法可以检查变量是否为数组,但这是我的首选方法——干净且易于理解。
const isArray = (arr) => Array.isArray(arr)
6、从 URL 中提取主机名
这对于检查链接是外部的还是内部的很有用。基于此,我们可以为某些链接添加不同的行为或样式。
此函数也适用于包含端口号或查询字符串的 URL。
const extractHostname = (url) => {
let hostname = (url.indexOf("//") > -1) ? url.split('/')[2] : url.split('/')[0]
// Remove port number.
hostname = hostname.split(':')[0]
// Remove querystring.
hostname = hostname.split('?')[0]
return hostname
}
console.log(extractHostname('https://www.baidu.com/?tn=87135040_oem_dg')); //www.baidu.com
7、只允许正数
有时,我们希望变量只包含正数。不必使用 if 语句来检查数字是否为负数,可以使用以下单行:
const getPositiveNumber = (number) => Math.max(number, 0)
8、将文本复制到剪贴板
将文本复制到剪贴板是一个可以通过多种方式解决的问题。
const copyTextToClipboard = async (text) => {
await navigator.clipboard.writeText(text)
}
9、获取一个月的天数
在没有任何外部库帮助的情况下在
JavaScript 中处理日期有时会很痛苦。但是您是否知道有一个干净简单的单行线可以帮助您获得一个月的天数?
const daysInMonth = (month, year) => new Date(year, month, 0).getDate()
console.log(daysInMonth(2, 2024));// 29
console.log(daysInMonth(12, 2022));// 31
10、 以一种很好的方式交换值
交换两个变量的值是你以前可能做过很多次的事情,执行此操作更简洁的方法,如下所示:
let personA = "Laura"
let personB = "John"
[personA, personB] = [personB, personA]
console.log(personA) // 'John'
console.log(personB) // 'Laura'
11、用一个空格替换多个空格
处理空格可能很烦人,空格最常见的问题之一是必须处理多个空格。幸运的是,我们可以用单个空格替换它们。
const replaceSpaces = (str) => str.replace(/\s\s+/g, ' ')
console.log(replaceSpaces('Too many spaces'));// 'Too many spaces'
有时,我们可能还想替换其他空白字符,例如制表符和换行符。我们也可以在一行中用一个空格替换它们。
const replaceSpaces2 = (str) => str.replace(/\s\s+/g, ' ')
console.log(replaceSpaces2('too\n many \twhitespaces \rin here'));// 'too many whitespaces in here'
12、 以随机顺序对数组的元素进行排序
有时,希望对数组的元素进行洗牌。例如,在洗牌时。没有标准的 JavaScript 函数可以为执行此操作。但它可以通过非常短但功能强大的代码行来完成。
const sortRandom = (arr) => arr.sort(() => Math.random() - 0.5)
console.log(sortRandom(["Some text", 2, true, 4, 94.12]));// ['Some text', 94.12, 2, true, 4]
console.log(sortRandom([1, 2, 3, 4, 5]));// [4, 3, 2, 5, 1]
13、检查两个对象是否相等
比较对象并检查它们是否相等,在大多数情况下,比较对象比只做 objectA === objectB 要复杂一些。但是,它可以在一行代码中完成。
这个函数的美妙之处在于这个函数还可以检查两个以上的对象。
const isEqual = (...objects) => objects.every(obj => JSON.stringify(obj) === JSON.stringify(objects[0]))
console.log(isEqual({ name: 'Frank', age: 32 }, { name: 'Frank', age: 32 }));// true
console.log(isEqual({ name: 'Frank', age: 41 }, { name: 'Frank', age: 32 }));// false