如何简化这个循环

时间:2019-07-25 09:41:37

标签: node.js

我的疑问是我是否能够成功地在循环中插入数组,但是我需要简单地编写该代码,所以有人可以建议我这样做吗?

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
    };
}

2 个答案:

答案 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
    };
}
相关问题