我在Firebase中有一个角度应用程序。我想更改Firebase项目的值。每次总KM更改时,都需要将其设置为正确的值。这就是我的服务:
countKm(){
this.totalKmRef = this.db.list(this.uid + '/rides');
this.totalKm$ = this.totalKmRef.valueChanges();
this.totalKm$.subscribe(res=> this.getAllRides(res));
}
getAllRides(res){
this.rides = res;
this.rides.forEach(ride =>{
this.uniqueRides.push(ride.km);
})
this.totalKm = this.uniqueRides.reduce(this.sum);
localStorage.setItem("totalKm", this.totalKm);
}
sum(a, b){
return a += b;
}
现在由于某种原因,当我骑车时一切都很好,但是第二次一切都出了错。
例如,我第一次运行foreach(firebase已经有5个项目之后):
0{
0: 5,
1: 5,
2: 5,
3: 5,
4: 5,
}
运行foreach 1次后,我的对象列表如下所示: 0 { 0:5 1:5 2:5 3:5 4:5 5:5 }
第二次添加新值后,foreach会进一步执行此操作:
0{
0: 5,
1: 5,
2: 5,
3: 5,
4: 5,
5: 5,
6: 5,
7: 5,
8: 5,
9: 5,
10: 5,
11: 5,
12: 5,
}
有人可以帮助我吗?我认为这在foreach中是错误的配置,但找不到位置。
感谢您的帮助!
答案 0 :(得分:3)
this.uniqueRides.push(ride.km);
只是将其他项推入数组。
请检查是否包含旅程.includes
this.rides.forEach(ride => {
if(!this.uniqueRides.includes(ride)) {
this.uniqueRides.push(ride.km);
}
})
或每次清除阵列。 this.uniqueRides = []