_set.js 450 B

123456789101112131415161718192021
  1. var isNumber = require('./isNumber.js');
  2. var isArray = require('./isArray.js');
  3. var isObject = require('./isObject.js');
  4. function set (obj, path, value) {
  5. var key = String(path[0]);
  6. if (path.length === 1) {
  7. obj[key] = value;
  8. return;
  9. }
  10. if (!isArray(obj[key]) || !isObject(obj[key])) {
  11. var nextKey = path[1];
  12. obj[key] = isNumber(nextKey) ? [] : {};
  13. }
  14. return set(obj[key], path.slice(1), value);
  15. }
  16. module.exports = set;