七个简化代码为你助力

118 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

前言

灵活性是javaScript很大的一个特点,甚至有些代码实现方式都需要两行,一行就可以搞定,简直是骚操作。

本文总结了一些常用的或者是比较骚的代码实现方式。

取出数组最大的值

要取出数组的最大值有很多的实现方式,但是这里我们使用Math.max() Math.max可以比较两个值之间谁大谁小,其实它也可以实现找出数组中的最大值。

const maximum = (arr) => Math.max.apply(null,arr);
console.log(maximum([1,2,3,4])) //4

取出数组中最大值的数组下标

刚才我们利用Math.max()实现了最大值,是的,不错,我们还要使用Math.max()来找出数组中最大的下标值。哈哈哈!

const maxIndex = (arr) =>[].indexOf.call(arr,Math.max.apply(null,arr));
console.log(maxIndex([1,2,3,4])) // 3

数组去重

数组去重也有很多种实现方式,可以用循环实现,在ES6中带来了一个利器,一行代码即可搞定,Set:

const unique = (arr)=>[...new Set( arr )];
console.log(unique([1,2,3,4,3,4,3,2,3,3])) // [1,2,3,4]

虽然有缺点,但是应对大多数业务是完全可以的。

检查对象是否为空

或许一般大多数时候都是使用JSON.stringify("{}") === '{}'这样来判断的,但是这里我们使用Object.keys()来判断键的个数。

const isEmptyObj =  (arr) => obj && Object.keys(obj)?.length === 0 && obj.constructor === Object;
console.log(isEmptyObj({a:1})) // false

其实只要人为干预的话,可以去掉其它一些条件的判断,只要Object.keys()皆可。

用??替代||

??null判断运算符,只有当左边为undefined或null时,才取右边的值,否则则取左边的值。与||的不同在于||的话,||左边为0和false时,会取右边的值。

console.log(null??1) // 1
console.log(undefined??2) //2
console.log(0??3) //0
console.log(false ?? 3) //false
console.log(null||4) // 4
console.log(undefined || 5) // 5
console.log(0|| 6) // 6

时间补0

如果给你一个时间是2022-8-10,将它只有一位数的转成两位数,应该怎么做?

const timeSupplement = (time)=> time.replace(/(?<=\/|-|\.|:|\b|T)\d{1}(?=\/|-|\.|:|\b|T)/g, "0$&");

console.log(timeSupplement("2022-8-10")) // 2022-08-10

!! 替代 null,undefined,‘’

平时我们判断某个值不等于null、undefined、‘’,平时也喜欢用a !== undefined && a !== null && a !== ''或者[null,undefined,'']这两种,这里再带来一种方式,使用!!,两次取反

console.log(!!undefined,!!null,!!'',!!0,!!1) //false false false false true