我有一个包含 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,因为它们使用 < 而不是 <=,否则您需要指定 <=,然后它也可以工作 - 尽管这会增加冗余计算。
添加回答
举报
0/150
提交
取消