如何动态地在js对象中写入键(作为参数传入函数)?
How to write the key(passed in as an argument to the function) in the js object dynamically?
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;
}
被转储的对象的键名等于传递的标识符,而不是它的动态值"first_name"。
我错过了什么。让我知道我是否应该更新一些东西。
实际产量
name: "cafebabe"
预期输出
first_name : "cafebabe"
仅供参考
像
一样调用这个函数
createHierarchy({}, 'personal_details', 'first_name', 'cafebabe')
这段代码不正确,你不能使用 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]
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;
}
被转储的对象的键名等于传递的标识符,而不是它的动态值"first_name"。
我错过了什么。让我知道我是否应该更新一些东西。
实际产量
name: "cafebabe"
预期输出
first_name : "cafebabe"
仅供参考
像
一样调用这个函数createHierarchy({}, 'personal_details', 'first_name', 'cafebabe')
这段代码不正确,你不能使用 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]