【问题标题】:Iterate through an array and concatenate another array all the values before next iteration of first array?在第一个数组的下一次迭代之前遍历一个数组并连接另一个数组的所有值?
【发布时间】:2015-11-05 18:47:45
【问题描述】:

我正在尝试构建一个 URL 列表。结构是这样的: http://somedomain.com/game_CATEGORY?page=NUMBER.

我有一系列游戏类别,从动作游戏类别到文字游戏类别。

我有一个数字数组,从 1 到 20。

我将部分网址保存为字符串。

我已经尝试了一天以这种方式组合它们:

cats = ["action","adventure","arcade","board","card","casino","casual","educational","family","music","puzzle","racing","role_playing","simulation","sports","strategy","trivia","word"],
nums = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],
urlString1 = "http://example.com/game_",
urlString2 = "?page=",
madeUrl1 = [],
x = 1, // counter for page numbers
madeUrl2 = [];

for (var i = 0; i < cats.length; i++) {
    madeUrl1.push(urlString1+cats[i]+urlString2);
};


for (var i = 0; i < madeUrl1.length; i++) {
    madeUrl2.push(madeUrl1[i]+x);
    x++;
};
console.log(madeUrl2);

这让我部分到达那里。但是它会为每个类别打印一个数字。我需要在每个类别打印输出中添加所有 20 个数字,然后转到下一个类别。

【问题讨论】:

    标签: javascript arrays loops


    【解决方案1】:

    您需要在第二个循环中嵌套另一个 for 循环。比如:

    for (var i = 0; i < madeUrl1.length; i++) {
        for (int j = 0; j < nums.length; j++) {
            madeUrl2.push(madeUrl1[i]+nums[j]);
        }
    };
    

    这样,您将遍历您在 madeUrl1 中准备的基本 URL,然后为每个您遍历数组中的每个数字的基础 URL。

    如果数字只是从 1 到 20 的顺序,你甚至不需要 nums 数组:

    for (var i = 0; i < madeUrl1.length; i++) {
        for (var x = 1; x <= 20; x++) {
            madeUrl2.push(madeUrl1[i]+x);
        }
    };
    

    整个事情可以通过一个嵌套的for循环来完成:

    for (var i = 0; i < cats.length; i++) {
        for (var x = 1; x <= 20; x++) {
            madeUrl1.push(urlString1+cats[i]+urlString2+x);
        }
    };
    

    【讨论】:

    • 不错。这就是我昨天尝试的方法,但我一直认为我需要从第一个循环返回一个值,以便让第二个循环获取它的数据。感谢您向我展示正确的方法。希望我能自己解决这个问题!
    【解决方案2】:

    您可以使用下面的代码:

    cats = ["action","adventure","arcade","board","card","casino","casual","educational","family","music","puzzle","racing","role_playing","simulation","sports","strategy","trivia","word"],
    nums = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],
    urlString1 = "http://example.com/game_",
    urlString2 = "?page=",
    madeUrl1 = [],
    x = 1;
    
    for (var i = 0; i < cats.length; i++) {
        for (var j = 0; j < nums.length; j++) {
            madeUrl1.push(urlString1+cats[i]+urlString2+nums[j]);
            x++;
        };
    };
    
    console.log(madeUrl1);
    

    我们在这里所做的是首先嵌套我们的循环。例如,它将首先遍历第一个数组,当它到达第一个项目时,在本例中为类别,它将运行嵌套循环 20 次,将每个数字附加到页面。完成后,继续到第二类,以此类推。

    【讨论】:

    • 该死,嵌套是我尝试的第一件事,但我没有正确设置它。谢谢。
    • 很高兴能为您提供帮助。如果这对您来说是正确的答案,请使用此答案顶部的复选图标将其标记为正确,和/或投票。干杯。
    猜你喜欢
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多