猿问

连接查询参数并将它们添加到 url

我有一个包含 4 个类别(错误、警告、信息和调试)的复选框,每当用户检查其中一些时,我必须将它们添加到查询中以进行 httpclient 调用。


例如,如果用户检查所有这些,我应该发送一个查询:(category=eq=Error,category=eq=Warning,category=eq=Info,category=eq=Debug)


这就是我所做的,我尝试创建一个字符串对象并在检查它们时一一连接:


 if (obj.category) {

      const ctgLength = obj.category.length; //the number of categorieschecked by the user

      object["(category=eq"] = obj.category[0];

      for (let i = 1; i < ctgLength - 1; i++) {

      console.log(obj.category[i]);

      object[",category=eq"] = obj.category[i] + ",";

     }

     object["category=eq"] = obj.category[ctgLength - 1] + ")";

   }

但我得到的是: (category=eq=Error,category=eq=Info,category=eq=Debug) for 循环只影响最后一次迭代的值。


第一:在我的情况下,我正在做一个生成查询的好方法吗?第二:如何修复此代码以获取查询中的所有类别?


MYYA
浏览 142回答 1
1回答

阿波罗的战车

你用它做你的循环let i = 1应该是let i = 0JavaScript 中的索引是基于 0 的。正确的是:for (let i = 0; i < ctgLength; i++) {看起来您正在像 VB 程序员一样进行编程。JavaScript 中的索引处理与 VB 中的“不同”:var a = [0,1,2];==> a.length = 33 是数组的实际元素个数所以要遍历所有内容,它是 for(var i =0; i < 3; ++i) console.log(a[i]);在VB中,你可以做For i As Integer = 0 To 4 Step 1&nbsp; &nbsp; System.Console.WriteLine(i)Next i和基于 c 的语言中的等价物将是for (let i = 0; i <= ctgLength; i++) { console.log(i);}&nbsp;注意 <=,而不是 <。这就是为什么你需要做VB中的-1: For i As Integer = 0 To ctgLength-1 Step 1。在基于 C 的语言中不需要 -1,因为它们使用 < 而不是 <=,否则您需要指定 <=,然后它也可以工作 - 尽管这会增加冗余计算。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答