【发布时间】:2016-09-25 19:53:05
【问题描述】:
我有一个“路径”字符串:'profile.name.en';
我想用它来动态创建一个对象。我正在使用此功能及其工作:
function set(obj, path, value) {
var schema = obj; // a moving reference to internal objects within obj
var arr = path.split('.');
var len = arr.length;
for(var i = 0; i < len-1; i++) {
var elem = arr[i];
if( !schema[elem] ) schema[elem] = {};
schema = schema[elem];
}
schema[arr[len-1]] = value;
return schema;
}
像这样使用它:
var a = {};
var path = 'profile.name.en';
var profileName = 'OleFrank';
var o = set(a, path, profileName);
// result
{
profile: {
name: {
en: 'OleFrank'
}
}
}
我尝试重构为使用 forEach 而不是 for 循环,但后来它不再工作了。这是为什么呢??
【问题讨论】:
-
向我们展示您的 forEach 尝试。
-
可能由词法作用域引起...
-
为什么选择forEach? reduce 会更合适。
-
.forEach()不会return任何事情,以防你在你的 for 循环中尝试过。
标签: javascript loops object