美文网首页
Javascript的使用小技巧

Javascript的使用小技巧

作者: 凌杰991 | 来源:发表于2019-10-10 13:52 被阅读0次

    利用解构来进行数据交换

    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
        }
    }
    

    相关文章

      网友评论

          本文标题:Javascript的使用小技巧

          本文链接:https://www.haomeiwen.com/subject/sagopctx.html