传入对象和数组变量

时间:2013-08-26 03:11:01

标签: javascript arrays object

我在javascript对象中有对话框,分为对象和数组(类似于JSON格式)。

我想通过传入各自的变量名来访问这些对象和数组......

例如,我如何访问“parent_object_name”对象和子数组“array_name”?我已经尝试过创建对象和数组,然后传入它们,如下:

var parent_object_name = npc_dialog.people[NPC_id].dialogs.answers;
var child_array_name = npc_dialog.people[NPC_id].dialogs.answers.AnswerOne;
cycleDialog(0, parent_object_name, child_array_name);

但这没效果......

然后我尝试将名称作为字符串传递:

cycleDialog(0, "parent_object_name", "child_array_name");

这也行不通。

cycleDialog接受这些变量并将其替换为:

function cycleDialog(NPC_id, TYPE, SUBTYPE) {
    NPCs_ARRAY[NPC_id].children[1].text = npc_dialog.people[NPC_id].dialogs.TYPE.SUBTYPE[dialog_id];
}

谢谢


编辑:

数据如下:

"dialog" : 
{   
    "dialog_name" :
    [ 
              "dialog",
              "more text..."
    ]
},
"answers" : 
{   
    "answer_name" :
    [ 
              "answer text here",
              "more text..."
    ]
}

3 个答案:

答案 0 :(得分:2)

你可能想要这个:

function cycleDialog(NPC_id, TYPE, SUBTYPE) {
    NPCs_ARRAY[NPC_id].children[1].text = npc_dialog.people[NPC_id].dialogs[TYPE][SUBTYPE][dialog_id];
}

以及:

cycleDialog(0, parent_object_name, child_array_name);

.x[x]之间的区别在于.x查找了密钥'x',而[x]查找了变量{{1}的密钥评估为:

x

答案 1 :(得分:0)

您无法通过传递名称来将变量传递给函数。 唯一的方法是传递他们的地址或价值。

答案 2 :(得分:0)

您的函数cycleDialog从对象npc_dialog.people[NPC_id].dialogs获取数据。如果我理解正确,您需要做的就是将该对象中您想要查找的对象的名称传递给它,并按照Claudiu的回答更改cycleDialog 功能

e.g。 cycleDialog(0, 'answers', 'answer_name');

会返回[ "answer text here", "more text..." ]

使用您提供的示例数据(假设此数据位于npc_dialog.people[0].dialogs内)。