export default class Utils {
    static toDepthObject(obj) {
        var target = {};
        for (var key in obj) {
            var keyArr = key.split("_"); //以下划线或分割
            var tempobj = target;
            for (var i = 0; i < keyArr.length - 1; i++) {
                if (tempobj[keyArr[i]])
                    tempobj = tempobj[keyArr[i]];
                else {
                    tempobj[keyArr[i]] = {};
                    tempobj = tempobj[keyArr[i]];
                }
            }
            //给叶子元素赋值
            tempobj[keyArr[keyArr.length - 1]] = obj[key];
        }
        return target;
    }
    static flatObject(obj, target, pkey) {
        target = target || {};
        for (var key in obj) {
            var nkey = pkey ? pkey + "_" + key : key;
            if (!obj[key])
                target[nkey] = obj[key];
            else if (obj[key] instanceof Array)
                target[nkey] = obj[key];
            else if (obj[key] instanceof Date)
                target[nkey] = obj[key];
            else if (typeof obj[key] == "object")
                Utils.flatObject(obj[key], target, nkey); //递归赋值
            else
                target[nkey] = obj[key];
        }
        return target;
    }
    static copyValueFromVO(model, vo) {
        var target = model;
        for (var key in vo) {
            var keyArr = key.split("_"); //以下划线或分割
            var tempobj = target;
            for (var i = 0; i < keyArr.length - 1; i++) {
                if (tempobj[keyArr[i]])
                    tempobj = tempobj[keyArr[i]];
                else {
                    tempobj = null;
                    break;
                }
            }
            //给叶子元素赋值
            if (tempobj) {
                let leafProp = keyArr[keyArr.length - 1];
                if (tempobj.hasOwnProperty(leafProp))
                    tempobj[leafProp] = vo[key];
            }
        }
        return target;
    }
}