UNPKG

hfyk-app

Version:

导出问题

66 lines (62 loc) 1.68 kB
/** * @description 获取某个对象下的属性,用于通过类似'a.b.c'的形式去获取一个对象的的属性的形式 * @param {object} obj 对象 * @param {string} key 需要获取的属性字段 * @returns {*} */ export function getProperty(obj, key) { if (typeof obj !== "object" || null == obj) { return ""; } if (typeof key !== "string" || key === "") { return ""; } if (key.indexOf(".") !== -1) { const keys = key.split("."); let firstObj = obj[keys[0]] || {}; for (let i = 1; i < keys.length; i++) { if (firstObj) { firstObj = firstObj[keys[i]]; } } return firstObj; } return obj[key]; } /** * @description 设置对象的属性值,如果'a.b.c'的形式进行设置 * @param {object} obj 对象 * @param {string} key 需要设置的属性 * @param {string} value 设置的值 */ export function setProperty(obj, key, value) { if (typeof obj !== "object" || null == obj) { return; } // 递归赋值 const inFn = function (_obj, keys, v) { // 最后一个属性key if (keys.length === 1) { _obj[keys[0]] = v; return; } // 0~length-1个key while (keys.length > 1) { const k = keys[0]; if (!_obj[k] || typeof _obj[k] !== "object") { _obj[k] = {}; } const key = keys.shift(); // 自调用判断是否存在属性,不存在则自动创建对象 inFn(_obj[k], keys, v); } }; if (typeof key !== "string" || key === "") { } else if (key.indexOf(".") !== -1) { // 支持多层级赋值操作 const keys = key.split("."); inFn(obj, keys, value); } else { obj[key] = value; } }