Javascript 循环遍历文件夹中的文件数组

Javascript 循环遍历文件夹中的文件数组,javascript,arrays,json,Javascript,Arrays,Json,我正在制作一个RPG,我想加载dialog.json,它由文件夹按级别分开。每个关卡文件夹都有所有quest dialog.json,即使玩家尚未完成 文件夹结构: 我发送一个包含玩家完成的任务的阵列(上面红色方框): jsonFilesArray=[“101”、“102”、“103”、“104”、“201”] allLevelsArray=[1,2] 我想动态循环查看Levels文件夹,只查找已完成的任务编号(在jsonfilesray中) 这段代码的工作方式是,它不断在所有级别循环,搜索可

我正在制作一个RPG,我想加载dialog.json,它由文件夹按级别分开。每个关卡文件夹都有所有quest dialog.json,即使玩家尚未完成

文件夹结构:

我发送一个包含玩家完成的任务的阵列(上面红色方框):

jsonFilesArray=[“101”、“102”、“103”、“104”、“201”]

allLevelsArray=[1,2]

我想动态循环查看
Levels
文件夹,只查找已完成的任务编号(在
jsonfilesray
中)

这段代码的工作方式是,它不断在所有级别循环,搜索可能不在其文件夹中的文件。(例如:当它在2级文件夹中循环时,它找不到
quest_101.json
,因此它会中断)

我如何才能在所有级别的文件夹中动态循环搜索
jsonfilesray
中给出的任务?我甚至不想担心在Levels文件夹中循环


谢谢

如果要在jsonFilesArray中存储级别,为什么还要使用allLevelsArray

为什么不这样构造阵列:

jsonFilesArray = ["1-01", "1-02", "1-03", "1-04", "2-01"];
然后像这样循环:

$.each(jsonFilesArray, function (i, jsonQuestID) {
    var level = jsonQuestID.slice(0, jsonQuestID.indexOf('-'));
    var quest = jsonQuestID.slice(jsqonQuestID.indexOf('-') + 1);
    $.getJSON("dialog/Level "+ level +"/quest_"+ (level + quest) +".json", function(json) {
        //do stuff 
    });
});
或者,如果您将所有文件保存在同一文件夹中(考虑到您的命名约定,这是完全可行的),并假设您的原始阵列:

$.each(jsonFilesArray, function (i, jsonQuestID) {
    $.getJSON("dialog/quest_"+ jsonQuestID +".json", function(json) {
        //do stuff 
    });
});
如果您需要为每个级别迭代执行任何特定操作,我建议您使用二维数组或对象数组:

jsonFilesArray = [{level: 1, quests: ["01", "02", "03", "04"]}, {level: 2, quests: ["01"]}];


将它们全部展平到一个文件夹/数组中,然后搜索该文件夹/数组。给定文件命名模式,您不应该有任何名称冲突。
jsonFilesArray = [{level: 1, quests: ["01", "02", "03", "04"]}, {level: 2, quests: ["01"]}];
$.each(jsonFilesArray, function (i, levelObj) {
    //do stuff with level
    $.each(levelObj.quests, function (i, quest) {
        $.getJSON("dialog/quest_"+ (levelObj.level + quest) +".json", function(json) {
            //do stuff 
        });
    });
});