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