Firebase数据库suly字段求和问题:返回整个对象而非结果
解决Firebase数据库中"suly"字段求和问题
嗨,我来帮你搞定这个Firebase求和的问题~你当前代码返回整个对象,核心原因是reduce方法没有设置初始累加值:当reduce没给初始值时,第一次迭代会把数组的第一个元素(也就是你的整个对象)当作sum的初始值,后续把对象和数值相加,自然得不到正确的总和。
直接给你修改好的代码,同时做了一些容错处理:
constructor( public navCtrl: NavController, public navParams: NavParams, private firebasedb: AngularFireDatabase ) { this.firebasedb.list("/fogasok/").subscribe(_data => { // 关键:给reduce设置初始值0,确保sum从数值类型开始累加 // 同时用item.suly || 0处理字段缺失/值为空的情况,避免出现NaN let sulySum = _data.reduce((sum, item) => sum + (item.suly || 0), 0); console.log("nézzük meg a sumot", sulySum); }); }
额外给你两个实用小提示:
- 如果你的业务只需要获取一次数据(不需要实时监听更新),可以添加
take(1)操作符来自动取消订阅,避免内存泄漏:// 先导入take操作符 import { take } from 'rxjs/operators'; // 然后修改订阅部分 this.firebasedb.list("/fogasok/").pipe(take(1)).subscribe(_data => { let sulySum = _data.reduce((sum, item) => sum + (item.suly || 0), 0); console.log("nézzük meg a sumot", sulySum); }); - 如果
suly字段是字符串类型的数字,记得先转成数值,比如parseFloat(item.suly) || 0,避免字符串拼接导致错误结果。
内容的提问来源于stack exchange,提问作者user3551399
相关产品推荐
相关产品推荐

