共计 2316 个字符,预计需要花费 6 分钟才能阅读完成。
最近重温了一遍红宝书,发现一些比拟好玩的写法,很多货色日常都在用,然而发现还会有不一样的写法, 联合一些日常工作中应用的办法,为大家总结一篇日常常常应用可能还不晓得的点,心愿对你能有所帮忙:
一行代码实现构造加赋值
咱们日常常常应用构造赋值,个别都是先构造,再赋值,当然咱们也能够一行就实现解构加赋值操作,看起来十分简化,当然可读性你懂得!
let people = {name: null, age: null};
let result = {name: '张三', age: 16};
({name: people.name, age: people.age} = result);
console.log(people) // {"name":"张三","age":16}###
对根底数据类型进行解构
日常中咱们应该用不到这样的场景,然而实际上咱们也能够对根底数据类型解构
const {length : a} = '1234';
console.log(a) // 4
对数组解构疾速拿到最初一项值
实际上咱们是能够对数组解构赋值拿到 length 属性的,通过这个个性也能够做更多的事件。
const arr = [1, 2, 3];
const {0: first, length, [length - 1]: last } = arr;
first; // 1
last; // 3
length; // 3
将下标转为中文零一二三 …
日常可能有的列表咱们须要将对应的 012345 转为中文的一、二、三、四、五 …,在老的我的项目看到还有通过本人手动定义很多行这样的写法,于是写了一个这样的办法转换
export function transfromNumber(number){const INDEX_MAP = ['零','一'.....]
if(!number) return
if(number === 10) return INDEX_MAP[number]
return [...number.toString()].reduce((pre, cur) => pre + INDEX_MAP[cur] , '' )
}
判断整数的不同办法
/* 1. 任何整数都会被 1 整除,即余数是 0。利用这个规定来判断是否是整数。然而对字符串不精确 */
function isInteger(obj) {return obj%1 === 0}
/* 1. 增加一个是数字的判断 */
function isInteger(obj) {return typeof obj === 'number' && obj%1 === 0}
/* 2. 应用 Math.round、Math.ceil、Math.floor 判断 整数取整后还是等于本人。利用这个个性来判断是否是整数 */
function isInteger(obj) {return Math.floor(obj) === obj
}
/* 3. 通过 parseInt 判断 某些场景不精确 */
function isInteger(obj) {return parseInt(obj, 10) === obj
}
/* 4. 通过位运算符 */
function isInteger(obj) {return (obj | 0) === obj
}
/* 5.ES6 提供了 Number.isInteger */
通过 css 检测零碎的主题色从而全局批改款式
@media 的属性 prefers-color-scheme 就能够晓得以后的零碎主题,当然应用前须要查查兼容性
@media (prefers-color-scheme: dark) {//...}
@media (prefers-color-scheme: light) {//...}
javascript 也能够轻松做到
window.addEventListener('theme-mode', event =>{if(event.mode == 'dark'){}
if(event.mode == 'light'){}})
window.matchMedia('(prefers-color-scheme: dark)') .addEventListener('change', event => {if (event.matches) {} // dark mode})
数组随机打乱程序
通过 0.5-Math.random() 失去一个随机数,再通过两次 sort 排序打乱的更彻底, 然而这个办法实际上并不够随机,如果是企业级使用,倡议应用第二种洗牌算法
shuffle(arr) {return arr.sort(() => 0.5 - Math.random()). sort(() => 0.5 - Math.random());
},
function shuffle(arr) {for (let i = arr.length - 1; i > 0; i--) {const randomIndex = Math.floor(Math.random() * (i + 1))
;[arr[i], arr[randomIndex]] = [arr[randomIndex], arr[i]]
}
return arr
}
随机获取一个 Boolean 值
和上个原理雷同,通过随机数获取,Math.random()的区间是 0 -0.99,用 0.5 在两头百分之五十的概率
function randomBool() {return 0.5 - Math.random()
}
把数组的第一项放到最初一项
function (arr){return arr.push(arr.shift());
}
把数组最初一项移到第一项
function(arr){return arr.unshift(arr.pop());
}
利用 set 数组去重
function uniqueArr(arr){return [...new Set(arr)]
}
篇幅关系,更多知识点请查看👉:开发者网站 –30 个 JavaScript 知识点