UNPKG

ut2

Version:

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

36 lines (32 loc) 1.02 kB
'use strict'; var isIndex = require('./internals/isIndex.js'); var native = require('./internals/native.js'); var isObject = require('./isObject.js'); var toPath = require('./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) : native.nativeUndefined; if (!isObject(newValue)) { newValue = isObject(objValue) ? objValue : isIndex(paths[index + 1]) ? [] : {}; } nested[key] = newValue; nested = nested[key]; } } return object; } module.exports = set;