如何解决为什么 .forEach 在 express.js 中的控制器中调用后返回 undefined?
我有一个保存对象的数组电影,每个对象都有一个名为 avgrating 的属性,带有一个浮点数或整数。示例:
const movies = [
{
name: 'Rambo I',avgrating: 4.6659
},{
name: 'Rambo II',avgrating: 3.158
},{
name: 'Rambo III',avgrating: 3.956
}
];
在 util.js 文件中,我有一个函数可以将每部电影的 avgratings 取整到最接近的 0.5 或整数:
exports.roundingAvgrating = (movies) => {
const moviescopy = [...movies];
return moviescopy.forEach((movie) => {
if (movie.avgrating === null) {
movie.avgrating = null
} else {
movie.avgrating = Math.round(movie.avgrating * 2) / 2;
}
});
};
问题是当我在控制器中调用函数时,它返回 undefined。
const { roundingAvgrating } = require('../utils/roundingAvgratings.js');
const roundedratings = roundingAvgrating(searchItems)
console.log(roundedratings) // undefined...why?
解决方法
你想映射你的电影,你应该每次循环返回电影。像这样:
const movies = [
{
name: 'Rambo I',avgRating: 4.6659
},{
name: 'Rambo II',avgRating: 3.158
},{
name: 'Rambo III',avgRating: 3.956
}
];
const roundingAvgRating = (movies) => {
return movies.map((movie) => {
if (movie.avgRating) {
movie.avgRating = Math.round(movie.avgRating * 2) / 2;
}
return movie
});
}
你也不需要在地图中复制
,return movies.map((movie) => {
if (movie.avgRating) {
movie.avgRating = Math.round(movie.avgRating * 2) / 2;
}
return movie;
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。