0

オブジェクトと配列に分離された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..."
    ]
}
4

3 に答える 3

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]x

> var array = {x: 100, foobar: 200}
> var x = 'foobar';
> array.x
100
> array[x]
200
于 2013-08-26T03:15:48.253 に答える
0

名前を渡して変数を関数に渡すことはできません。これを行う唯一の方法は、アドレスまたは値を渡すことです。

于 2013-08-26T03:17:48.007 に答える