UNPKG

@arco-design/web-vue

Version:

Arco Design Vue 2.0: A Vue.js 3 UI Library

52 lines (51 loc) 1.3 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); var is = require("./is.js"); const getValueByPath = (obj, path) => { if (!obj || !path) { return void 0; } path = path.replace(/\[(\w+)\]/g, ".$1"); const keys = path.split("."); if (keys.length === 0) { return void 0; } let temp = obj; for (let i = 0; i < keys.length; i++) { if (!is.isObject(temp) && !is.isArray(temp) || !keys[i]) { return void 0; } if (i !== keys.length - 1) { temp = temp[keys[i]]; } else { return temp[keys[i]]; } } return void 0; }; const setValueByPath = (obj, path, value, { addPath } = {}) => { if (!obj || !path) { return; } path = path.replace(/\[(\w+)\]/g, ".$1"); const keys = path.split("."); if (keys.length === 0) { return; } let temp = obj; for (let i = 0; i < keys.length; i++) { if (!is.isObject(temp) && !is.isArray(temp) || !keys[i]) { return; } if (i !== keys.length - 1) { if (addPath && is.isUndefined(temp[keys[i]])) { temp[keys[i]] = {}; } temp = temp[keys[i]]; } else { temp[keys[i]] = value; } } }; exports.getValueByPath = getValueByPath; exports.setValueByPath = setValueByPath;