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