对象工具类

备注:如果let报错,可以修改为var,尤其是IE浏览器

/**
 * @author: 苗士军
 * @description 对象工具类
 */
ObjectUtils = {
    /**
     * @description 对象转参数
     * @param object
     * @return {string}
     */
    objectToParam: function (object) {
        let param = "";
        for (let key in object) {
            if (param == "") {
                param = param + key + "=" + object[key];
            }
            else {
                param = param + "&" + key + "=" + object[key];
            }
        }
        return param;
    },
    /**
     * @description 复制对象
     * @param: object
     * @return: 复制后对象
     */
    copyObject: function (object) {
        return JSON.parse(JSON.stringify(object));
    },
    /**
     * @description 将对象属性赋值给模板{{}}
     * @param template
     * @param object
     * @return 模板后数据
     */
    renderTemplate: function (template, object) {
        return template.replace(/{{(.+?)}}/g, function (m, m1) {
            return object[m1]
        })
    },
    /**
     * @description 判断对象是否为空
     * @param object
     * @return {boolean}
     */
    isEmpty: function (object) {
        return JSON.stringify(object) == "{}";
    },
    /**
     * @description 获取对象key值集合
     * @param object
     * @return {Array}
     */
    getKeys: function (object) {
        let arr = [];
        if (!this.isEmpty(object)) {
            try {
                arr = Object.keys(object);
            } catch (e) {
                for (var key in object) {
                    arr.push(key);
                }
            }
        }
        return arr;
    },
    /**
     * @description 获取对象value值集合
     * @param object
     * @return {Array}
     */
    getValues: function (object) {
        let arr = [];
        if (!this.isEmpty(object)) {
            try {
                arr = Object.values(object);
            } catch (e) {
                for (var key in object) {
                    arr.push(object["" + key]);
                }
            }
        }
        return arr;
    },
    /**
     * @description 合并对象
     * @param obj1
     * @param obj2 obj2 中的属性会覆盖掉 obj1
     * @return {*}
     */
    assignObject: function (obj1, obj2) {
        if (this.isEmpty(obj1) && this.isEmpty(obj2)) {
            return {};
        }
        try {
            Object.assign(obj1, obj2);
        } catch (e) {
            for (var key in obj2) {
                obj1[key] = obj2[key];
            }
        }
        return obj1;
    },
    /**
     * @description 选择对象中的一个(多个)属性
     * @param object
     * @param keys
     * @return {{}}
     */
    getKeysProperties: function (object, keys) {
        if (this.isEmpty(object)) {
            return {};
        }
        if (!Array.isArray(keys)) {
            keys = [keys];
        }
        let obj = {};
        keys.reduce(function (a, c, i) {
            obj[c] = object[c]
        }, "");
        return obj;
    },
    /**
     * @description 选择对象中的一个(多个)属性
     * @param object
     * @param keys
     * @return {{}}
     */
    deleteKeysProperties: function (object, keys) {
        if (this.isEmpty(object)) {
            return {};
        }
        if (!Array.isArray(keys)) {
            keys = [keys];
        }
        let arr = this.getKeys(object);
        let obj = {};
        arr.filter(a = > keys.indexOf(a) < 0
        ).
        reduce(function (a, c, i) {
            obj[c] = object[c]
        }, "");
        return obj;
    },
    /**
     * @description 获取对象的属性值
     * @param object
     * @param key
     * @param ignoreCase,默认true
     * @return {*}
     */
    getKeyPropertie: function (object, key, ignoreCase) {
        let value = null;
        if (this.isEmpty(object)) {
            return value;
        }
        ignoreCase = ignoreCase == undefined ? true : ignoreCase;
        for (let k in object) {
            if (ignoreCase) {
                if (k.toString().toUpperCase() == key.toString().toUpperCase()) {
                    value = object[k];
                }
            }
            else {
                if (k == key) {
                    value = object[k];
                }
            }
        }
        return value;
    },
    /**
     * @description 清空对象属性
     * @param object
     * @param keys
     * @return
     */
    clearObject: function (object, keys) {
        if (!this.isEmpty(object)) {
            keys = keys == undefined ? object.getKeys() : keys;
            if (!Array.isArray(keys)) {
                keys = [keys];
            }
            keys.reduce(function (a, c, i) {
                object[c] = '';
            }, '');
        }
    }
}
原文地址:https://www.cnblogs.com/miaosj/p/10677275.html