首页 > 解决方案 > javaScript - 如何将多个动态值分配给循环中的变量

问题描述

我有匹配的动态数组:

[
      "Rivers United - Kano Pillars",
      "MFM FC - Abia Warriors",
      "Lobi Stars - Enugu Rangers",
      "Sunshine Stars - Dakkada",
      "Ifeanyi Ubah - Kwara United",
      "Enyimba - Adamawa United",
      "Empoli - Torino U19",
      "Bologna U19 - Ascoli",
      "Lazio - Inter U19",
      "Juventus U19 - Spal",
      "Milan - Fiorentina U19",
      "Sassuolo U19 - AS Roma U19",
      "Genclerbirligi - Denizlispor",
      "Goztepe - Fenerbahce",
      "Kayserispor - Demir Grup Sivasspor",
      "Trabzonspor U19 - Istanbul Basaksehir AS",
      "Fatih Karagumruk - KASIMPASA AS",
      "Portugal - Israel",
      "Wydad AC Casablanca - DHJ ",
      "Rsb Berkane - Athletic Youssoufia"
    ]

supertest当我使用基于上述数组的库执行 API 调用时,我能够获取单个对手并保存到单个变量中,我的代码是:

const response = await api.getRequestAsync("https://sports/api/feeds/prematch/mostpopularsports/en/1/5/6/", `2021-06-06`, "", "");
        const otp = api.jsonPath(response.body, `$[0].AreaMatches[0].Items..ItemName`);
        let opponent1 = otp[0].split(" - ")[0];
        let opponent2 = otp[0].split(" - ")[1];

        let opponent20 = otp[5].split(" - ")[1];
        console.log(opponent1 + " | " + opponent2 + " | " + opponent20);

产生变量为:opponent1, opponent2...opponent20

和控制台输出为:[0-0] Rivers United | Kano Pillars | Adamawa United

但这会产生手动工作来为每个变量赋值。

如何将此代码传输到loop logic,因此每个对手都会动态变化:Rivers United, Kano Pillars...Athletic Youssoufia

和变量为:opponent1, opponent2...opponent20

标签: javascriptloops

解决方案


例如,您可以使用数组来存储多个值,就像您已经在使用的那样。您只需要自己创建这些变量。

请参阅JavaScript -来自 Mozilla Web Docs 的数组

在您的示例代码中,您访问otp的将对手作为字符串。我们可以创建一个循环来用您的调用otp结果填充数组。split()

这是一个简单的示例代码,您可以根据自己的喜好进行调整:

let opponentsLeft = [];
let opponentsRight = [];

for(var i=0; i < otp.length; i++) {
  var split = otp[i].split(" - ");
  
  opponentsLeft.push(split[0]);
  opponentsRight.push(split[1]);
}

在更现代的 JavaScript 中,您可以使用forEach()

let opponentsLeft = [];
let opponentsRight = [];

otp.forEach(element => {
  var split = element.split(" - ");
  
  opponentsLeft.push(split[0]);
  opponentsRight.push(split[1]);
});

您可以对生成的数组做任何您想做的事情。同样,只需根据自己的喜好进行修改。

然后,您可以在这些数组上编写一个循环来做您想做的事情:

for(var o = 0; o < opponentsLeft.length; o++) {
  console.log('left', opponentsLeft[o]);
  console.log('right', opponentsRight[o]);
}

推荐阅读