index.js 3.5 KB
Newer Older
1 2 3 4 5 6 7 8 9
export function isEmpty (obj, allowBlank = false) {
    if (isNull(obj)) return true
    if (isArray(obj)) return obj.length === 0
    if (isString(obj)) return !(allowBlank || obj.length > 0)
    if (isObject(obj)) return isEmptyObject(obj)
    for (var key in obj) { if (obj.hasOwnProperty(key)) return false }
    return obj === undefined || (!allowBlank ? obj === '' : false)
}
/**
yma16's avatar
yma16 已提交
10 11 12
  * 判断是否不为空
  * @param {*} obj
  */
13 14 15 16 17 18 19 20 21 22 23 24 25 26
export function isNotEmpty (obj, allowBlank = false) {
    return !isEmpty(obj, allowBlank)
}
export function isEmptyObject (obj) {
    if (!obj) return true
    for (const name in obj) {
        return false
    }
    return true
}
export function isNotEmptyObject (obj) {
    return isNotEmptyObject(obj)
}
/**
yma16's avatar
yma16 已提交
27 28 29
  * 是否是对象
  * @param {*} input
  */
30 31 32 33
export function isObject (input) {
    return Object.prototype.toString.call(input) === '[object Object]'
}
/**
yma16's avatar
yma16 已提交
34 35 36
  * 是否是数组
  * @param {*} input
  */
37 38 39
export function isArray (input) {
    return (
        input instanceof Array ||
yma16's avatar
yma16 已提交
40
         Object.prototype.toString.call(input) === '[object Array]'
41 42 43 44 45
    )
}
export function isDate (input) {
    return (
        input instanceof Date ||
yma16's avatar
yma16 已提交
46
         Object.prototype.toString.call(input) === '[object Date]'
47 48 49 50 51
    )
}
export function isNumber (input) {
    return (
        input instanceof Number ||
yma16's avatar
yma16 已提交
52
         Object.prototype.toString.call(input) === '[object Number]'
53 54 55 56 57
    )
}
export function isString (input) {
    return (
        input instanceof String ||
yma16's avatar
yma16 已提交
58
         Object.prototype.toString.call(input) === '[object String]'
59 60 61 62 63 64 65 66 67 68 69 70 71 72
    )
}
export function isBoolean (input) {
    return typeof input === 'boolean'
}
export function isFunction (input) {
    return typeof input === 'function'
}
export function isNull (input) {
    return input === undefined || input === null
}
export function isPlainObject (obj) {
    if (
        obj &&
yma16's avatar
yma16 已提交
73 74 75
         Object.prototype.toString.call(obj) === '[object Object]' &&
         obj.constructor === Object &&
         !hasOwnProperty.call(obj, 'constructor')
76 77 78 79 80 81 82 83 84 85
    ) {
        var key
        for (var k in obj) {
            key = k
        }
        return key === undefined || hasOwnProperty.call(obj, key)
    }
    return false
}
/**
yma16's avatar
yma16 已提交
86 87
  * 转树形
  */
88 89 90 91 92 93 94 95 96 97 98 99 100 101
export function toTree (data) {
    // 删除 所有 children,以防止多次调用
    data.forEach(function (item) {
        delete item.children
    })
    // 将数据存储为 以 id 为 KEY 的 map 索引数据列
    var map = {}
    data.forEach(function (item) {
        map[item.id] = item
    })
    var val = []
    data.forEach(function (item) {
        // 以当前遍历项,的pid,去map对象中找到索引的id
        var parent = map[item.parentId]
yma16's avatar
yma16 已提交
102

103 104 105 106 107 108 109 110 111 112 113 114
        // 好绕啊,如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
        if (parent) {
            ;
            (parent.children || (parent.children = [])).push(item)
        } else {
            // 如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
            val.push(item)
        }
    })
    return val
}
/**
yma16's avatar
yma16 已提交
115 116
  * 通用排序
  */
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
export function sortExp (key, isAsc) {
    return function (x, y) {
        if (isNaN(key)) {
            if (x[key] > y[key]) {
                return 1 * (isAsc ? 1 : -1)
            } else if (x[key] < y[key]) {
                return -1 * (isAsc ? 1 : -1)
            } else {
                return 0
            }
        } else {
            return (x[key] - y[key]) * (isAsc ? 1 : -1)
        }
    }
}