UNPKG

@aplus-frontend/antdv

Version:

Vue basic component library maintained based on ant-design-vue

31 lines 1.11 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import get from './get'; function internalSet(entity, paths, value, removeIfUndefined) { if (!paths.length) { return value; } const [path, ...restPath] = paths; let clone; if (!entity && typeof path === 'number') { clone = []; } else if (Array.isArray(entity)) { clone = [...entity]; } else { clone = _extends({}, entity); } // Delete prop if `removeIfUndefined` and value is undefined if (removeIfUndefined && value === undefined && restPath.length === 1) { delete clone[path][restPath[0]]; } else { clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined); } return clone; } export default function set(entity, paths, value) { let removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; // Do nothing if `removeIfUndefined` and parent object not exist if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) { return entity; } return internalSet(entity, paths, value, removeIfUndefined); }