我正在尝试使用其他两个数组的组合值填充一个数组,并尝试使用 for 循环来执行此操作。
var filterTables = ["1","2","3"]
var filterValues = ["Egypt",,"Ghana"]
for (i = 0; i < filterValues.length ; i++) {
if (filterValues[i]) {
for (i = 0; i < filterValues.length ; i++) {
var filter = '{field: '+filterTables[i]+',value:'+filterValues[i]+',operator:"="},'
filterArray.filters.push(filter)
if (i===3) {
'{field: "'+filterTables[i]+'",value:"'+filterValues[i]+'",operator:"="}'
}
}
}
}
但是 FOR 循环根本没有执行,我认为这是因为第一个 IF 语句检查当前 [i] 位置是否有值。是否正确使用?我需要在 FOR 循环之外使用 IF 语句吗?
这是想要的结果:
var filter = '{field: '1',value:'Egypt',operator:"="}'
var filter = '{field: '3',value:'Ghana',operator:"="}'
这里有几个问题:
1- 什么是变量filterArray
和filterArray.filters
?它们是否在您的代码中定义?我认为它们不是,因为一旦我添加了一个声明,循环就会按预期执行。
2- 正如许多评论所指出的,您不需要嵌套循环来达到所需的结果(而且您i
在两个循环中都使用相同的计数器,这肯定会导致问题)。
您可以使用一个循环,并在每次迭代读取filterTables[i]
,filterValues[i]
以及填写相应的对象。
顺便提一下,为什么不使用JSON.stringify
来构建您的 JSON 字符串?
var filterTables = ["1","2","3"];
var filterValues = ["Egypt",,"Ghana"];
var filterArray = {'filters': []}; //added variable declaration for the object `filterArray` and its property `filters`
for(var i = 0; i < filterValues.length; i++) {
if(filterValues[i]) {
var filter = JSON.stringify({
field: filterTables[i], //I assume here you could just use i+1
value: filterValues[i],
operator: '='
});
filterArray.filters.push(filter);
}
}
console.log(filterArray.filters);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句