我正在尝试使用基于 MongoDB-ish 选择器“top.middle.bottom”的属性树递归构建一个对象。还有一些 underscorejs 助手:
function setNestedPropertyValue(obj, fields, val) {
if (fields.indexOf(".") === -1) {
// On last property, set the value
obj[fields] = val;
return obj; // Recurse back up
} else {
var oneLevelLess = _.first(fields.split("."));
var remainingLevels = _.rest(fields.split(".")).join(".");
// There are more property levels remaining, set a sub with a recursive call
obj[oneLevelLess] = setNestedPropertyValue( {}, remainingLevels, val);
}
}
setNestedPropertyValue({}, "grandpaprop.papaprop.babyprop", 1);
期望:
{
grandpaprop: {
papaprop: {
babyprop: 1
}
}
}
结果:
undefined
帮助和提示将不胜感激。