【问题标题】:Can we Increment the global variable name inside a for loop like a variable when using Postman使用 Postman 时,我们可以像变量一样在 for 循环中增加全局变量名称吗
【发布时间】:2019-07-09 12:09:54
【问题描述】:

我正在尝试解析响应数据并获取“id”的值。因为我期望同一个响应有多个值,所以我将它放入一个数组中。在 for 循环中,我将索引设置为 i 的数组递增。我需要将这些值中的每一个传递给一个全局变量,如 var_id0、var_id1... var_idn。

可以在 for 循环内递增针对全局名称“var_id”的数字吗?

我查找了多个示例,但没有一个示例显示在设置全局变量时是否可以这样做。

var index_id= [];
var jsonData = JSON.parse(responseBody);
for (var i = 0; i < jsonData.list.length; i++) {  
    var counter = jsonData.list[i];
    index_id[i] = counter.id;
    pm.globals.set("var_id"[i], index_id[i]) <<-- How can this be achieved.
    //pm.globals.set("variable name", "variable value") --> Actual syntax.
}

我的期望是,直到 for 循环结束,每个循环的全局变量名称都会增加 1 并设置相应的值。 例如:

var_id1 = "700" var_id2 = "800"...

【问题讨论】:

    标签: javascript postman-testcase


    【解决方案1】:

    "var_id"[i] 表示 "var_id" 中查找第 i 个索引,对于将计算为位置 i 处的字符的字符串,因此 "var_id"[0] 将是 "v"。相反,您想通过附加 i"var_id" 来构建字符串,这可以通过+ 完成。

    【讨论】:

    • 您好 Jonas Wilms,它的作用就像一个魅力。谢谢你。正如您所提到的,通过添加一个 +,它有助于在全局变量名称中添加一个数字。谢谢。
    【解决方案2】:

    改变

    pm.globals.set("var_id"[i], index_id[i])
    

    pm.globals.set(`var_id${i}`, index_id[i])
    

    【讨论】:

    • 嗨,Christopher Bradley,上面的问题是 globals.set 将引号内的所有内容作为变量名,而不是根据需要附加值。
    • 啊,我明白了,你有回复的样本吗?我知道您将一个标记为答案,但如果我有一个响应示例,他们可能是一种更有效的方式。干杯!
    • 这是我在 Postman 的全局设置中发现的:VARIABLE INITIAL VALUE CURRENT VALUE var_id${[i]} 747 747
    • 啊,我搞砸了,检查我编辑的答案,不带括号。
    • var_id${i} 732 732
    【解决方案3】:

    为什么需要所有这些全局变量?定义一个全局数组并将您的值推入其中。然后通过索引访问它们。几乎与您想要的语法相同。

    【讨论】:

      【解决方案4】:

      你可以使用eval函数。

      var index_id= [];
      var jsonData = JSON.parse(responseBody);
      for (var i = 0; i < jsonData.list.length; i++) {  
          var counter = jsonData.list[i];
          index_id[i] = counter.id;
          eval("var_id"+i+"="+index_id[i]);
          //pm.globals.set("var_id"[i], index_id[i]) <<-- How can this be achieved.
          //pm.globals.set("variable name", "variable value") --> Actual syntax.
      }
      

      【讨论】:

      • 感谢不加解释地投反对票。 eval 有时并不邪恶,接受它。 :)
      • 不过这里完全没有必要,而且你还有"var_id"[i]
      • @Paulpro 你的意思是 eval 行之后的行吗?哪一部分是不必要的?
      猜你喜欢
      • 2016-04-14
      • 1970-01-01
      • 2021-11-18
      • 2018-01-01
      • 2013-05-30
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 2015-08-01
      相关资源
      最近更新 更多