Javascript的使用小技巧
2019-10-10 本文已影响0人
凌杰991
利用解构来进行数据交换
let a = 1, b = 2
;[a, b] = [2, 1]
判断数据的类型
const isType = (data, type) => {
const typeObj = {
'[object String]': 'string',
'[object Number]': 'number',
'[object Boolean]': 'boolean',
'[object Null]': 'null',
'[object Undefined]': 'undefined',
'[object Object]': 'object',
'[object Array]': 'array',
'[object Function]': 'function',
'[object Date]': 'date', // Object.prototype.toString.call(new Date())
'[object RegExp]': 'regExp',
'[object Map]': 'map',
'[object Set]': 'set',
'[object HTMLDivElement]': 'dom', // Object.prototype.toString.call(document.querySelector('#app'))
'[object NodeList]': 'nodeList', // Object.prototype.toString.call(document.querySelectorAll('div'))
'[object WeakMap]': 'weakMap',
'[object WeakSet]': 'weakSet',
'[object Window]': 'window', // Object.prototype.toString.call(window)
'[object Error]': 'error', // new Error('1')
'[object Arguments]': 'arguments',
}
let name = Object.prototype.toString.call(data) // 借用Object.prototype.toString.call()获取数据类型
let typeName = typeObj[name] || '未知类型' // 匹配数据类型
return typeName === type // 判断该数据类型是否为传入的类型
}
获取纯数字数组的最大最小值,主要使用apply来传递参数
const arr = [15, 6, 12, 13, 16]
const max = Math.max.apply(Math, arr) // 16
const min = Math.min.apply(Math, arr) // 6
数组去重
const arr = [1, 2, 2, 3]
// ① Set
const arr1 = [...new Set(arr)]
// ② Filter
const arr2 = arr.filter((item, index) => arr.indexOf(item) === index)
// ③ Reduce
const arr3 = arr.reduce((unique, item) => unique.includes(item) ? unique : [...unique, item], [])
将伪数组(具有length属性的非Array的Object)转为数组
// ①
[...arguments]
// ②
[].slice.call(arguments)
// ③
Array.from(arguments)
// ④
Array.prototype.slice.call(arguments)
对象数组(形如:[{}, {}])根据key值去重
let arr = [
{
key: 1,
value: '1'
},
{
key: 2,
value: '2'
},
{
key: 1,
value: '1'
}
]
// ①
let obj = {}
arr = arr.reduce((item, next) => {
obj[next.key] ? '' : obj[next.key] = true && item.push(next)
return item
}, [])
// ②
let obj = {}
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i].key]) {
newArr.push(arr[i])
obj[arr[i].key] = true
}
}