如何动态地在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]