简单实用的单行代码

1、生成数组

当你需要要生成一个 0-99 的数组

方案 1

const createArr = (n) => Array.from(new Array(n), (v, i) => i)
const arr = createArr(100) // 0 - 99 数组

方案 2

const createArr = (n) => new Array(n).fill(0).map((v, i) => i)
createArr(100) // 0 - 99数组

 

2、数组去重

const removeDuplicates = list => [...new Set(list)]
removeDuplicates([0, 0, 2, 4, 5]) // [0,2,4,5]

 

3、多数组取交集

const intersection = (a, ...arr) => [...new Set(a)].filter((v) => arr.every((b) => b.includes(v)))

intersection([1, 2, 3, 4], [2, 3, 4, 7, 8], [1, 3, 4, 9])
// [3, 4]

 

4、进制转换

将 10 进制转换成 n 进制,可以使用 toString(n)

const toDecimal = (num, n = 10) => num.toString(n)
// 假设数字10要转换成2进制
toDecimal(10, 2) // '1010'

将 n 进制转换成 10 进制,可以使用 parseInt(num, n)

// 10的2进制为1010
const toDecimalism = (num, n = 10) => parseInt(num, n)
toDecimalism(1010, 2)

 

5、删除无效属性

当你需要删除一个对象中的属性值为 null 或 undefined 的所有属性 

const removeNullUndefined = (obj) => Object.entries(obj).reduce((a, [k, v]) => (v == null ? a : ((a[k] = v), a)), {});

removeNullUndefined({name: '', age: undefined, sex: null}) // { name: '' }

 

 6、反转对象键值
当你需要将对象的键值对交换
const invert = (obj) => Object.keys(obj).reduce((res, k) => Object.assign(res, { [obj[k]]: k }), {})
invert({name: 'jack'}) // {jack: 'name'}

 

7、uuid

const uuid = (a) => (a ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16) : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid))
uuid()

 

8、获取 cookie

当你需要将 cookie 转换成对象

const getCookie = () => document.cookie
    .split(';')
    .map((item) => item.split('='))
    .reduce((acc, [k, v]) => (acc[k.trim().replace('"', '')] = v) && acc, {})

getCookie()

 

9、强制等待

当你需要等待一段时间,但又不想写在 setTimeout 函数中,造成回调地狱

const sleep = async (t) => new Promise((resolve) => setTimeout(resolve, t));
sleep(2000).then(() => {console.log('time')});

 

posted @ 2023-07-19 13:19  艾莱克  阅读(11)  评论(0编辑  收藏  举报