temp = temp[array[i]] = {name:value};
在上面的代码片段中,名称实际上是我的函数的参数,其值为first_name。
这是功能。
function createHierarchy(obj, group, name, value){
console.log("group = "+group+"\nname ="+name)
var array = group.split(".");
var temp = obj;
var len = array.length;
for(var i = 0; i < len; i++) {
if(temp[array[i]] === undefined)
temp = temp[array[i]] = {name:value};
else
temp = temp[array[i]][name] = value;
}
return obj;
}
我缺少什么。如果我应该更新一些内容,请告诉我。
name: "cafebabe"
first_name : "cafebabe"
将此功能称为
createHierarchy({}, 'personal_details', 'first_name', 'cafebabe')
答案 0 :(得分:1)
这段代码不正确,您不能将name
用作默认值中的变量,如下所示:
if(temp[array[i]] === undefined)
temp = temp[array[i]] = {name:value};
else
temp = temp[array[i]][name] = value;
将其替换为:
temp[array[i]] = temp[array[i]] || {}; // If `temp[array[i]]` doesn't exist, add it.
temp = temp[array[i]][name] = value; // Assign the `value`.
JavaScript不允许将变量用作对象文字中的对象键。在这个例子中:
{ name: value }
JavaScript解释器永远不会寻找name
变量。它只会使用"name"
作为密钥。
仅使用变量作为对象键的方式是通过括号表示法:
myObject[name]