我正在尝试为数组中的每个项执行一个函数,我知道关闭并通过使用ES6 let
并尝试使用forEach
进行补偿,如下所示:
this.tourIDS = [];
this.tours.forEach(tour => {
this.tourIDS.push(tour.tour_id);
});
this.tourIDS.forEach(id => {
this.map.setFilter('routes', ['==', 'tour_id', id]);
console.log(id);
});
这是一个mapboxgl setFilter
函数,它接受像['==', 'tour_id', id]
这样的查询参数,这里的想法是为tourIDS
数组中的每个id传递一次id。
所以预期的行为是让函数在数组中的每个元素上执行,但只有数组中的最后一个元素才会被执行,就好像没有关闭一样,但console.log(id)
执行正确记录每个元素,所以为什么console.log
会起作用而另一个函数不起作用?!
答案 0 :(得分:0)
setFilter
本身的性质,因为回想起该函数会覆盖前一个过滤器。