功能不尊重关闭

时间:2018-02-28 10:05:51

标签: javascript arrays closures mapbox-gl-js

我正在尝试为数组中的每个项执行一个函数,我知道关闭并通过使用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会起作用而另一个函数不起作用?!

1 个答案:

答案 0 :(得分:0)

正如@Keith在他的评论中强调的那样,循环没有问题,但是mapbox-gl js setFilter本身的性质,因为回想起该函数会覆盖前一个过滤器。