UNPKG

ut2

Version:

一个现代 JavaScript 实用工具库。[点击查看在线文档]。

34 lines (31 loc) 1 kB
import isIndex from './internals/isIndex.js'; import { nativeUndefined } from './internals/native.js'; import isObject from './isObject.js'; import toPath from './toPath.js'; function set(object, path, value, customizer) { if (!isObject(object)) { return object; } var paths = toPath(path, object); var length = paths.length; var lastIndex = length - 1; var index = -1; var nested = object; while (++index < length) { var key = paths[index]; if (index === lastIndex) { nested[key] = value; } else { var objValue = nested[key]; var newValue = customizer ? customizer(objValue, key, nested) : nativeUndefined; if (!isObject(newValue)) { newValue = isObject(objValue) ? objValue : isIndex(paths[index + 1]) ? [] : {}; } nested[key] = newValue; nested = nested[key]; } } return object; } export { set as default };