import { isNotEmptyObject } from "../../is" import { getObjectValue } from "./getObjectValue" import { objectEach } from "./objectEach" import { setObjectValue } from "./setObjectValue" /** * 根据 Mask 对象,裁剪源对象,只有 Mask 对象中有的键才会被保留下来 * @param srcOb 待裁剪对象 * @param maskOb Mask 对象 */ export function objectMask(srcOb: any, maskOb: any, options?: {}) { let newOb: any = {} objectEach( maskOb, (value, key, { keyPath }) => { let srcValue = getObjectValue(srcOb, keyPath) if (isNotEmptyObject(value)) return if (srcValue !== undefined) { setObjectValue(newOb, keyPath, srcValue, true) } }, { needKeyPath: true } ) return newOb }