使用 for 循环崩溃的过滤按钮
2019-12-09
46
我有一个只允许立即购买的过滤按钮,用于过滤允许该选项的列表。现在,使用下面代码中的 for 循环,单击按钮时应用程序会崩溃。如果我删除 for 循环,它不会崩溃。我不太明白崩溃的原因,因为我循环正确。至少我认为我是这样的。有人发现我的代码有问题吗?beforeCurrentFilter 应该在单击按钮之前重置过滤器。我总共有 3 个过滤器,所以如果选择了多个过滤器,我认为它应该会恢复。
filteredPosts: any[] = [];
posts: any[] = [];
beforeCurrentFilter: any[] = [];
buyItNowFilter() {
if (this.buyItNowStatus) {
this.buyItNowStatus = false;
console.log("ITS TRUE");
return;
}
if (!this.buyItNowStatus) {
console.log("its false");
this.beforeCurrentFilter = this.filteredPosts;
this.buyItNowStatus = true;
for (let i = 0; i < this.posts.length; i++) {
if (this.posts[i].auctionType !== "Not Available") {
console.log("LISTING HERE");
console.log(this.posts[i]);
this.filteredPosts.push(this.posts[i]);
}
}
this.posts = this.filteredPosts;
}
}
1个回答
您可以重构您的代码使其看起来像这样,它应该可以解决您的问题,如果您使用
Array.filter
方法,您可以消除 for 循环的使用
buyItNowFilter() {
if (this.buyItNowStatus) {
this.buyItNowStatus = false;
console.log('it\'s true');
return;
} else {
console.log('it\'s false');
this.beforeCurrentFilter = this.filteredPosts;
this.buyItNowStatus = true;
this.filteredPosts = this.posts.filter(x => x.auctionType !== 'Not Available');
this.posts = this.filteredPosts;
}
}
Smokey Dawson
2019-12-09