我在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..."
]
}
答案 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
内)。