我有3个循环
$.each(results.doc, function(index, element){
for(var i=0; i < self.options.maxMatches; i++){
var RealCategory = this.data[0]['realcategories'][i];
var realcategoryName = RealCategory.name;
for(var j = 0; j< RealCategory.tournaments.length; j++){
var tournamentName = RealCategory.tournaments[j].name
self.append('<li>' + realcategoryName+' / '+i+' - '+tournamentName+' / '+j+' </li>');
}
};
});
在self.options.maxMatches
我决定在HTML中显示多少结果。让我们说self.options.maxMatches=10
。 RealCategory.tournaments.length>0
时会出现问题。比我得到第三和第二循环的结果。如果第三个for循环得到2个结果我得到我的HTML 10 + 2结果,但我想它只有10个结果。
答案 0 :(得分:2)
如果您最多需要maxMatches
个<li>
个(或tournaments
),那么您将要从一个索引器中保留一个单独的计数器并退出循环基于此。
var limit = self.options.maxMatches;
$.each(results.doc, function () {
// ...
for (var i = 0; i < categories.length; i++) {
// ...
for (var j = 0; j < RealCategory.tournaments.length; j++) {
// ...
limit--;
if (limit <= 0) {
// exit iterator `function`, interrupting both `for` loops
// `false` to instruct jQuery to not continue looping
return false;
}
}
}
});
maxMatches
目前仅限制realcategories
的数量。但是,每个都有tournaments
未知数(可能0
,可能5
等。)
2种可能的情况:
i | 0 | 1 | 2 | 3 | 4 | (e.g. maxMatches = 5)
tournaments (A) | 3 | 0 | 1 | 2 | 1 | (total = 7)
tournaments (B) | 0 | 1 | 1 | 0 | 0 | (total = 2)
答案 1 :(得分:0)
试试这个,这是一个快速修复。我在内部循环中增加了你的变量'i'(尽管这个代码可以用更好的方式编写)
$.each(results.doc, function(index, element){
for(var i=0; i < self.options.maxMatches; ){
var RealCategory = this.data[0]['realcategories'][i];
var realcategoryName = RealCategory.name;
for(var j = 0; j< RealCategory.tournaments.length; j++){
i++;
var tournamentName = RealCategory.tournaments[j].name
self.append('<li>' + realcategoryName+' / '+i+' - '+tournamentName+' / '+j+' </li>');
}
};
});