You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 lines
441 B
JavaScript

define(['./isNumber', './isArray', './isObject'], function (isNumber, isArray, isObject) {
function set (obj, path, value) {
var key = String(path[0]);
if (path.length === 1) {
obj[key] = value;
return;
}
if (!isArray(obj[key]) || !isObject(obj[key])) {
var nextKey = path[1];
obj[key] = isNumber(nextKey) ? [] : {};
}
return set(obj[key], path.slice(1), value);
}
return set;
});