我的疑问是我是否能够成功地在循环中插入数组,但是我需要简单地编写该代码,所以有人可以建议我这样做吗?
static async createProductReviewFromRequestBody(request_body) {
let reviews_ratings = []
for(let i in request_body.reviews_ratings)
{
let dict = {}
dict['user_id'] = request_body.reviews_ratings[i].user_id,
dict['user_full_name'] = request_body.reviews_ratings[i].user_full_name,
dict['reviews_ratings_user_rating'] = request_body.reviews_ratings[i].reviews_ratings_user_rating,
dict['reviews_ratings_description'] = request_body.reviews_ratings[i].reviews_ratings_description,
dict['reviews_ratings_review_date'] = new Date(),
dict['reviews_ratings_last_modified'] = new Date()
reviews_ratings.push(dict)
}
return {
product_id: request_body.product_id,
reviews_ratings: reviews_ratings
};
}
答案 0 :(得分:2)
使用.map
从旧数组中的每个项目创建一个新数组。将Date
保存在函数的开头,这样就不必每次都调用new Date()
,并且可以遍历一系列属性名以使内容保持干燥:
static async createProductReviewFromRequestBody(request_body) {
const now = new Date();
const reviews_ratings = request_body.reviews_ratings
.map((ratingsObj) => {
const newObj = {
reviews_ratings_review_date: now,
reviews_ratings_last_modified: now
};
for (const prop of ['user_id', 'user_full_name', 'reviews_ratings_user_rating', 'reviews_ratings_description']) {
newObj[prop] = ratingsObj[prop];
}
return newObj;
});
return {
product_id: request_body.product_id,
reviews_ratings // <-- can use property shorthand notation here
};
}
请记住not to use for..in
遍历数组!
答案 1 :(得分:0)
您可以使用Array.prototype.map
函数来做到这一点。
static async createProductReviewFromRequestBody(request_body) {
const reviews_ratings = request_body.reviews_ratings.map(item => ({
'user_id': item.user_id,
'user_full_name': item.user_full_name,
'reviews_ratings_user_rating': item.reviews_ratings_user_rating,
'reviews_ratings_description': item.reviews_ratings_description,
'reviews_ratings_review_date': new Date(),
'reviews_ratings_last_modified': new Date(),
}))
return {
product_id: request_body.product_id,
reviews_ratings: reviews_ratings
};
}