持续更新中……
判断对象是否为空
Obeject.keys(obj)
返回不包括原型上的可枚举属性,即自身的可枚举属性
JSON.stringify(obj)
也是只能读取对象本身的可枚举属性
Object.getOwnPropertyNames(obj)
symbol 作为 key 无法检测
for...in
会返回继承的属性
1
| Object.keys(obj).length === 0 && Object.getOwnPropertySymbols(obj).length === 0
|
一般来说 Object.keys(obj).length === 0 就够了
格式化JSON字符串
node写文件时如果直接把JSON数据转为字符串,数据会全在一行比较丑,不方便阅读
1
| {"code":200,"message":"success","pagination":{"currentPage":1,"pageSize":2,"total":26},"sentences":[{"copyright":"[email protected]","createdDate":"2021-07-27T06:00:46.123Z","_id":"610119e3a85b362b16bacffa","sentence":"“你觉得爱情是什么?” “舒适且不尴尬的沉默”","__v":0},{"copyright":"[email protected]","createdDate":"2021-07-27T06:00:46.123Z","_id":"60ffa341a85b362b16bacff0","sentence":"音乐老师说:“我不喜欢小苹果那类歌曲,但我不会去诋毁他,因为音乐没有好不好,只有合不合适。”音乐的低俗高雅之别,只不过是人们觉得自己高雅,应该享用特别一点的东西,对于不适合自己,自己不喜欢的东西,便嗤之以鼻,以显示自己的与众不同","__v":0}]}
|
使用JSON.stringify(data, null, '\t')
将数据格式化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| { "code": 200, "message": "success", "pagination": { "currentPage": 1, "pageSize": 2, "total": 26 }, "sentences": [ { "copyright": "[email protected]", "createdDate": "2021-07-27T06:00:46.123Z", "_id": "610119e3a85b362b16bacffa", "sentence": "“你觉得爱情是什么?” “舒适且不尴尬的沉默”", "__v": 0 }, { "copyright": "[email protected]", "createdDate": "2021-07-27T06:00:46.123Z", "_id": "60ffa341a85b362b16bacff0", "sentence": "音乐老师说:“我不喜欢小苹果那类歌曲,但我不会去诋毁他,因为音乐没有好不好,只有合不合适。”音乐的低俗高雅之别,只不过是人们觉得自己高雅,应该享用特别一点的东西,对于不适合自己,自己不喜欢的东西,便嗤之以鼻,以显示自己的与众不同", "__v": 0 } ] }
|
获取文件扩展名
1 2 3
| const filename = 'see you again.mp3' const suffix = filename.split('.').pop() console.log(suffix)
|
格式化时间
补全时间前面的0
方法1:使用padStart
方法
1 2 3 4 5 6 7
| const date = new Date() const year = date.getFullYear() const month = (date.getMonth() + 1).toString().padStart(2, '0') const day = date.getDay().toString().padStart(2, '0') const hour = date.getHours().toString().padStart(2, '0') const minute = date.getMinutes().toString().padStart(2, '0') const second = date.getSeconds().toString().padStart(2, '0')
|
方法2,使用substr
方法
1 2
| const day = '6' ('00' + day).substr(day.length)
|
借此封装一个简易的格式化日期函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| const formatDate = (date, fmt) => { let o = { "M+": date.getMonth() + 1, "D+": date.getDate(), "h+": date.getHours(), "m+": date.getMinutes(), "s+": date.getSeconds() }
if (/(Y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, date.getFullYear() + '').substr(4 - RegExp.$1.length) } for (let k in o) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : o[k].toString().padStart(2, '0')) } } return fmt }
console.log(formatDate(new Date(), 'YYYY-MM-DD hh:mm:ss'))
|
获取数组最后一个元素
- 根据索引
1 2
| const arr = ['html', 'css', 'js', 'vue'] console.log(arr[arr.length - 1])
|
- pop() 方法
pop() 方法用于删除并返回数组的最后一个元素,会改变原数组长度,可以配合 slice() 方法获取
1 2 3
| const arr = ['html', 'css', 'js', 'vue'] console.log(arr.pop()) console.log(arr.slice().pop())
|
- splice() 方法
同样会改变原数组,并且返回的格式是 array ,可以用 splice(-1)[0] 获取
1 2 3
| const arr = ['html', 'css', 'js', 'vue'] console.log(arr.splice(-1)) console.log(arr.slice().splice(-1)[0])
|
统计字符串中每个字符出现的次数
1 2 3 4 5 6 7 8 9
| const countNumber = (s) => { let map = new Map() for (let i of s) { map.set(i, (map.get(i) || 0) + 1) } return map }
console.log(countNumber('aabcddeff'))
|
类比:统计出现次数做多的字符以及次数
1 2 3 4 5 6 7 8
| const str = 'aabbbccd' let map = new Map() for (let i of str) { map.set(i, (map.get(i) | 0) + 1) } map = new Map([...map].sort((a, b) => b[1] - a[1])) console.log(Array.from(map.keys())[0]) console.log(Array.from(map.values())[0])
|
数字排序 & 字符串排序
1 2 3 4 5 6 7 8 9 10 11
| const numSort = (numArr) => { return numArr.sort((a, b) => { return a - b }) } console.log(numSort([4, 99, 3, 8, 4]))
const strSort = (s) => { return [...s].sort().join('') } console.log(strSort('bgdhaavtz'))
|
字符串转数组
- split() 方法
- es6 中的扩展运算符 …
- es6 中的 Array.from 方法
- for…of 遍历字符串然后 push 进空数组
1 2 3 4 5 6
| let str = 'ILoveYou'
console.log(str.split(''))
console.log([...str]) console.log(Array.from(str))
|
生成随机数
1
| 值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
|
数组去重
1 2 3 4
| let arr = [1, 2, 3, 3, 4]
console.log(Array.from(new Set(arr))) console.log([...new Set(arr)])
|
判断数组对象
Object.prototype.toString.call()
1 2 3 4 5 6 7 8
| > arr = [] [] > obj = {} {} > Object.prototype.toString.call(arr) '[object Array]' > Object.prototype.toString.call(obj) '[object Object]'
|
constructor
1 2 3 4
| > arr.constructor() [] > obj.constructor() {}
|