Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Firebase对象上使用Object.keys()而不是.length_Javascript_Database_Typescript - Fatal编程技术网

Javascript 在Firebase对象上使用Object.keys()而不是.length

Javascript 在Firebase对象上使用Object.keys()而不是.length,javascript,database,typescript,Javascript,Database,Typescript,如何使用Object.keys()更正此代码段?当注释ID是数字时,代码工作正常。现在,如何使用firebase自动生成的ID (数据结构如下) ngOnInit(){ 这个.route.params .pipe(switchMap((params:params)=>this.dishservice.getDish(params['id'])) .订阅(dish=>{ 这道菜 this.favorite=this.favoriteService.isFavorite(this.dish.id)

如何使用Object.keys()更正此代码段?当注释ID是数字时,代码工作正常。现在,如何使用firebase自动生成的ID

(数据结构如下)

ngOnInit(){
这个.route.params
.pipe(switchMap((params:params)=>this.dishservice.getDish(params['id']))
.订阅(dish=>{
这道菜
this.favorite=this.favoriteService.isFavorite(this.dish.id);
//计算评分的平均值并提供评论的数量
this.numcomments=this.dish.comments.length;
设total=0;
this.dish.comments.forEach(comment=>total+=comment.rating);
this.avgstars=(总计/this.numcomments).toFixed(2);
},
errmess=>this.errmess=errmess);
}
试试这个

const commentIds  = Object.keys(this.dish.comments);
this.numcomments =  commentIds.length;           
let total = 0; 
commentIds.forEach(commentId => total += this.dish.comments[commentId].rating); 
this.avgstars = (total/this.numcomments).toFixed(2); 

如何更正代码段?从
console.log(Object.keys(this.dish.comments))
开始。还有Object.values()和Object.entries()。@Chris G那么呢?我在这里呆了一会儿。我会通知你的通知。如果你能重构那段代码。
this.dish.comments
是对象还是数组?那么,输出是什么?