[英]JavaScript: Return Rating Value from Array Using Internal Prototype Method within Factory Function
我试图从工厂功能创建一个对象。 该对象包含一个内部原型,该原型由不同的方法组成。
我被困在从getStars()方法返回的内容上。
内部原型:
const obj = {
addStars(rating){
return this.rating.push(rating)
},
getStars(?){
???
}
}
工厂功能:
function createRecipe (ingredients, cooktime, rating='') {
let instance = Object.create(obj)
instance.ingredients = ingredients;
instance.cooktime = cooktime;
instance.rating = [];
return instance
}
正在创建的对象:
const recipe1 = createRecipe(['cheese', 'dough', 'basil'], 20)
现在,我可以将其他人的starRatings添加到对象属性中的rating数组中。 如下所示:
recipe1.addStars('*****');
recipe1.addStars('***');
recipe1.addStars('*');
我的问题是,我希望内部原型中的getStars方法采用添加到“评分”数组中的所有星级的平均值。
我希望看到的是:
recipe1.getStars(); // returns 3
如何操纵getStars()方法以获得所需的结果?
只需使用reduce
将所有值求和,然后除以长度即可。
getStars() {
let allStars = this.ratings.reduce((a, { length: c }) => a + c, 0);
let avg = allStars / this.ratings.length;
return avg;
}
或单线:
getStars() {
return this.ratings.reduce((a, { length: c }) => a + c, 0) / this.ratings.length;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.