为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MYYA 2021-11-12 17:13:14
我有一个包含 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 循环只影响最后一次迭代的值。第一:在我的情况下,我正在做一个生成查询的好方法吗?第二:如何修复此代码以获取查询中的所有类别?
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

你用它做你的循环let i = 1

应该是let i = 0


JavaScript 中的索引是基于 0 的。


正确的是:


for (let i = 0; i < ctgLength; i++) {

看起来您正在像 VB 程序员一样进行编程。


JavaScript 中的索引处理与 VB 中的“不同”:


var a = [0,1,2];

==> a.length = 3

3 是数组的实际元素个数


所以要遍历所有内容,它是 for(var i =0; i < 3; ++i) console.log(a[i]);


在VB中,你可以做


For i As Integer = 0 To 4 Step 1

    System.Console.WriteLine(i)

Next i

和基于 c 的语言中的等价物将是


for (let i = 0; i <= ctgLength; i++) { console.log(i);} 

注意 <=,而不是 <。


这就是为什么你需要做VB中的-1: For i As Integer = 0 To ctgLength-1 Step 1。

在基于 C 的语言中不需要 -1,因为它们使用 < 而不是 <=,否则您需要指定 <=,然后它也可以工作 - 尽管这会增加冗余计算。


查看完整回答
反对 回复 2021-11-12
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信