util

对象属性复制

export function objectAssign(dest, source) {
    if (Object.assign) {
        return Object.assign(dest, source);
    }
    for (var key in source) {
        dest[key] = source[key];
    }
    return dest;
}

获取url参数

export function getQueryString(name) {
    let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    let result = location.search.substr(1).match(reg);
    return result ? unescape(result[2]) : "";
}

字符串去空格

export function strTrim(str) {
    return str.replace(/(^\s*)|(\s*$)/g, "");
}

生成全局唯一的id

export function uniqueId() {
    let localTime = new Date().getTime();
    return localTime + Math.ceil(Math.random() * 10000);
}

根据keyName生成数组查找函数

export function genItemSearchHandler(keyName) {
    return function(items, key) {
        for (var i = 0; i < items.length; ++i) {
            if (items[i][keyName] == key) {
                return items[i];
            }
        }
        return null;
    };
}

根据keyName生成数组index查找函数

export function genIndexSearchHandler(keyName) {
    return function(items, key) {
        for (var i = 0; i < items.length; ++i) {
            if (items[i][keyName] == key) {
                return i;
            }
        }
        return null;
    };
}

DOM处理

export function findParentNodeByCls(target, clsName) {
    while (target != window.document.body) {
        const cls = target.getAttribute("class");
        if (cls && cls.indexOf(clsName) !== -1) {
            return target;
        }
        target = target.parentNode;
    }

    return null;
}

动态加载资源

export function preLoadResouce(url, onloadCB) {
    var head = document.getElementsByTagName("head")[0];
    var element = document.createElement("script");
    element.type = "text/javascript";
    element.src = url;
    if (typeof onloadCB === "function") {
        element.onload = function() {
            element.onload = null;
            onloadCB();
        };
    }
    head.appendChild(element);
}

时间格式化

export function dateFormat(date, format = "YYYY-MM-DD hh:mm") {
    let ret = format.replace("YYYY", padStartZero(date.getFullYear(), 4));
    ret = ret.replace("MM", padStartZero(date.getMonth() + 1, 2));
    ret = ret.replace("DD", padStartZero(date.getDate(), 2));
    ret = ret.replace("hh", padStartZero(date.getHours(), 2));
    ret = ret.replace("mm", padStartZero(date.getMinutes(), 2));
    ret = ret.replace("ss", padStartZero(date.getSeconds(), 2));

    return ret;
}

获取n天的秒数

export function getDayMilliseconds(n = 1) {
    return n * 24 * 60 * 60 * 1000;
}

递归查找数据

export function recursionFind(datas = [], predcate, subPropName) {
    let ret = null;
    datas.some(function(data) {
        if (predcate(data)) {
            ret = data;
            return true;
        }

        if (isArray(data[subPropName])) {
            ret = recursionFind(data[subPropName], predcate, subPropName);

            return ret != null;
        }
    });

    return ret;
}

在光标处插入文字

export function insertAtCursor(obj, str) {
    if (document.selection) {
        var sel = document.selection.createRange();
        sel.text = str;
    } else if (typeof obj.selectionStart === "number" && typeof obj.selectionEnd === "number") {
        var startPos = obj.selectionStart,
            endPos = obj.selectionEnd,
            cursorPos = startPos,
            tmpStr = obj.value;
        obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);
        cursorPos += str.length;
        obj.selectionStart = obj.selectionEnd = cursorPos;
    } else {
        obj.value += str;
    }
}

删除Cookie

export function delCookie(name) {
    let exp = new Date();
    exp.setTime(exp.getTime() - 2 * 60 * 1000);
    let cval = getCookie(name);
    if (cval != null) {
        document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
    }
}

获取Cookie

export function getCookie(name) {
    let arr,
        reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if ((arr = document.cookie.match(reg))) {
        return unescape(arr[2]);
    } else {
        return null;
    }
}

数组去重

export function arrayDeduplicate(arr) {
    return [...new Set(arr)];
}
posted @ 2019-12-25 15:02  yhQuan  阅读(373)  评论(0编辑  收藏  举报