_set.js 441 B

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