如何使用JavaScript从多维对象数组构建URL?

如何使用JavaScript从多维对象数组构建URL?,javascript,arrays,Javascript,Arrays,因此,目标是获得如下字符串: somesite.com/-%20Luzon%20-/Bicol%20Region/Albay/Busay%20Falls/Busay_falls_10.jpg 所以我开始构建多维对象数组,我不确定如何使用数组组的名称构建url var photoArray = {}, islandGroups = ["- Luzon -", " - Visayas -", "-Mindanao-"], luzonRegions = [

因此,目标是获得如下字符串:

somesite.com/-%20Luzon%20-/Bicol%20Region/Albay/Busay%20Falls/Busay_falls_10.jpg
所以我开始构建多维对象数组,我不确定如何使用数组组的名称构建url

    var photoArray   = {},
        islandGroups = ["- Luzon -", " - Visayas -", "-Mindanao-"],
        luzonRegions = ["Bicol Region", "Cagayan Valley", "Calabarzon", "CAR", "Central Luzon", "Ilocos Region", "Mimaropa"],
        bicolProvinces = ["Albay", "Camarines Norte", "Camarines Sur", "Catanduanes", "Masbate", "Sorsogon"],
        albayProvinceTravelDestinations = ["Busay Falls", "Hoyop-Hoyopan Cave", "Lignon Hill", "Malabsay Falls", "Mt Mayon", "Panicuason Hot Spring Resort", "Vera Falls"];
        busayFallsPhotoPattern = ["Cover, Busay_falls_"];
        busayFallsPhotoPatternID1 = [""];
        busayFallsPhotoPatternID2 = ["1", "1_2", "10", "2", "2_2", "3", "3_2", "4", "4_2", "6", "7", "8", "9"];
        baseURL = "somesite.com";
    /* build sub-array */
    var islandGroupsArrayLength = islandGroups.length;
    for (var i = 0; i < islandGroupsArrayLength; i++) {
      photoArray[islandGroups[i]] = {};
    }
    var luzonRegionsLength = luzonRegions.length;
    for (var i = 0; i < luzonRegionsLength; i++) {
      photoArray["- Luzon -"][luzonRegions[i]] = {};
    }
    var bicolProvincesLength = bicolProvinces.length;
    for (var i = 0; i < bicolProvincesLength; i++) {
      photoArray["- Luzon -"]["Bicol Region"][bicolProvinces[i]] = {};
    }
    var albayProvinceTravelDestinationsLength = albayProvinceTravelDestinations.length;
    for (var i = 0; i < albayProvinceTravelDestinations; i++) {
      photoArray["- Luzon -"]["Bicol Region"]["Albay"][i] = {};
    }
    /* build string before converting space to %20% */
    /*
    busayFallsPhotoPattern = ["Cover, Busay_falls_"];
        busayFallsPhotoPatternID1 = [""];
        busayFallsPhotoPatternID2 = ["1", "1_2", "10", "2", "2_2", "3", "3_2", "4", "4_2", "6", "7", "8", "9"];
    */
    var busayFallsPhotoPatternLength = busayFallsPhotoPattern.length,
        busayFallsPhotoPatternID2Length = busayFallsPhotoPatternID2.length;
    /* setup photoURLs array */
    photoArray["- Luzon -"]["Bicol Region"]["Albay"]["Busay Falls"] = {};
    photoArray["- Luzon -"]["Bicol Region"]["Albay"]["Busay Falls"]["busayFallsPhotoURLs"] = {};

    photoArray["- Luzon -"]["Bicol Region"]["Albay"]["Busay Falls"]["busayFallsPhotoURLs"][0] = "Cover" + ".jpg";

    console.log(photoArray.[0].[0].[0].[0].[0].[0]); // this doesn't work

是的,所以肯定完全错了,钥匙是一样的。。。因此,与其举例说,不如说:

photos = {
  "Busay Falls" : "Cover.jpg",
  "Busay Falls" : "Busay_falls_10.jpg",
  "Busay Falls" : "etc..."
}
应该是

photos = {
  "busay_falls":[
    "Cover.jpg",
    "Busay_falls_10.jpg",
    "etc..."
  ]
}
然后,您可以通过遍历数组的索引来构建url

就像这里的照片案例:

photos.busay_falls[0] // becomes Cover.jpg

是的,所以肯定完全错了,钥匙是一样的。。。因此,与其举例说,不如说:

photos = {
  "Busay Falls" : "Cover.jpg",
  "Busay Falls" : "Busay_falls_10.jpg",
  "Busay Falls" : "etc..."
}
应该是

photos = {
  "busay_falls":[
    "Cover.jpg",
    "Busay_falls_10.jpg",
    "etc..."
  ]
}
然后,您可以通过遍历数组的索引来构建url

就像这里的照片案例:

photos.busay_falls[0] // becomes Cover.jpg

由于您有
n
数组,每个数组都有不同数量的项,因此您最好按如下方式递归地从每个数组中选取一个元素:

const lower=['a','b','c']
常量上限=['X','Y','Z']
常数数=[1,2,3]
const all=[下限、上限、数字]
//全部=二维阵列
//current=我们当前操作的'all'的第i个数组
//结果=连接的字符串
函数组合(全部,当前=0,结果=“”){
如果(当前==全部长度){
console.log(结果)
返回
}
for(设i=0;i组合(全部)
由于您有
n个
数组,每个数组都有不同数量的项,因此您最好按如下方式递归地从每个数组中选取一个元素:

const lower=['a','b','c']
常量上限=['X','Y','Z']
常数数=[1,2,3]
const all=[下限、上限、数字]
//全部=二维阵列
//current=我们当前操作的'all'的第i个数组
//结果=连接的字符串
函数组合(全部,当前=0,结果=“”){
如果(当前==全部长度){
console.log(结果)
返回
}
for(设i=0;i组合(全部)
在继续之前,请阅读本文并了解对象在JavaScript中的工作方式:@J.Titus是100%正确的,您需要停止所做的工作并了解JS对象的工作方式。一提到指针,我就知道你在用一种完全不同的语言(我想是C++)思考,这意味着如果不访问Mozilla开发者网络,你永远都不会成功()要查看他们的JS引用。@J.Titus实际上Cloudinary有一个命令专门用于执行此操作,但我需要Node.JS,而且我的方法是哑的,因为您需要知道文件夹中有什么。但是,是的,我仍然不知道我到底在做什么。在继续之前,请阅读本文并了解对象在JavaScript中的工作方式:@J.Titus是100%正确的,你需要停止你正在做的事情并了解JS对象是如何工作的。一提到指针,我就知道你在用一种完全不同的语言(我想是C++)思考,这意味着如果不访问Mozilla开发者网络,你永远都不会成功()要查看他们的JS引用。@J.Titus实际上Cloudinary有一个命令专门用于执行此操作,但我需要Node.JS,而且我的方法是哑的,因为您需要知道文件夹中有什么。但是是的,我仍然不知道我到底在做什么。哇,你的答案对我来说很疯狂(不是很糟糕)一些新的东西,比如常数和你写的组合函数。。。我以前就已经解决了我的问题,我只是在尝试查找我提出的问题时看到了这一点。谢谢你的回答,我认为它根据我最初提出的问题回答了问题。而且结果是Cloudinary输出了结果,我只是编写了一些脚本来“scrape”在服务器端对内容进行排序/缓存以保存API请求。哇,你的答案对我来说太疯狂了(不是很糟糕)一些新的东西,如const和你编写的组合函数。。。我以前就已经解决了我的问题,我只是在尝试查找我提出的问题时看到了这一点。谢谢你的回答,我认为它根据我最初提出的问题回答了问题。而且结果是Cloudinary输出了结果,我只是编写了一些脚本来“scrape”在服务器端对内容进行排序/缓存以保存API请求。