Javascript 传入对象和数组变量
我在一个javascript对象中创建了一个对话框,该对象分为对象和数组(类似于JSON格式) 我想通过传入它们各自的变量名来访问这些对象和数组 例如,如何访问“父对象名称”对象和子数组“数组名称”?我尝试过创建对象和数组,然后将它们传入,如下所示:Javascript 传入对象和数组变量,javascript,arrays,object,Javascript,Arrays,Object,我在一个javascript对象中创建了一个对话框,该对象分为对象和数组(类似于JSON格式) 我想通过传入它们各自的变量名来访问这些对象和数组 例如,如何访问“父对象名称”对象和子数组“数组名称”?我尝试过创建对象和数组,然后将它们传入,如下所示: var parent_object_name = npc_dialog.people[NPC_id].dialogs.answers; var child_array_name = npc_dialog.people[NPC_id].dialogs
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..."
]
}
你可能想要这个:
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]
查找变量x
计算结果为:
> var array = {x: 100, foobar: 200}
> var x = 'foobar';
> array.x
100
> array[x]
200
不能通过传递变量名将变量传递给函数。
唯一的方法是传递他们的地址或值。你的函数
cycleDialog
从对象npc\u对话框中获取数据。人物[npc\u id]。对话框
。如果我理解正确,您所需要做的就是将该对象中您希望它查找的对象的名称传递给它,然后按照克劳迪乌的答案更改cycleDialog
功能
e、 g.cycleDialog(0,'answers','answers_name')代码>
将返回[
“此处回答文本”,
“更多文本…”
]
使用您给出的示例数据(假设此数据位于npc_dialog.people[0]。dialogs
)。这与您的其他问题有什么不同吗?现在,当我传入cycleDialog(0,“答案”,“普通话”)
,对话框
应该能够查找与字符串“answers”和“mandarn”匹配的键,对吗?它表示无法读取未定义的属性“答案”
though@Growler:这意味着npc\u dialog.people[npc\u id]。dialogs
是undefined
而不是您所期望的。好的,谢谢。您上面提到的差异(.x
和[x]
)在访问键值和访问变量计算结果的键值方面。。。这只是用于对象,还是可以与数组具有类似的结构?@Growler:对于数组也是如此,尽管x.1
是无效语法,因此不能用这种方式处理数字