如何使用 JavaScript 将对象数组转换为给定格式

How to convert array of objects to given format using JavaScript

本文关键字:定格 格式 转换 数组 何使用 JavaScript 对象      更新时间:2023-09-26

我需要使用 JavaScript 格式化数据数组。我正在使用以下数据:

var response = [{
      day_id:1,
      day_name:"Monday",
      subcat_id:"2",
      cat_id:"1",
      comment:"hii"
}, {
      day_id:1,
      day_name:"Monday",
      subcat_id:"1",
      cat_id:"2",
      comment:"hello"
}
 {
      day_id:2,
      day_name:"Tuesday",
      subcat_id:"3",
      cat_id:"2",
      comment:"hii"
}]

。我需要将其转换为以下格式

var responseNew = {
      data: [{
        day_name: "Monday",
        day_id:1
        answers:[{
          cat_id:1,
          subcat_id:1,
          comment:'hii'
        },{
          cat_id:1,
          subcat_id:2,
          comment:'hello'
        }]
      }, {
        day_name: "Tuesday",
        day_id:2
        answers:[{
          cat_id:3,
          subcat_id:2,
          comment:'hello'
        }]
      }, {
        day_name: "Wednesday"
         day_id:3
      }, {
        day_name: "Thursday"
         day_id:4
      }, {
        day_name: "Friday"
         day_id:5
      }, {
        day_name: "Saturday",
         day_id:6
      }, {
        day_name: "Sunday"
         day_id:7
      }]
    };

我想将我的第一个数组转换为第二种格式。一个条件是,如果其他day_id不存在,它只是按照上面给出的静态设置日期名称和日期 ID。

使用下划线按day_id分组,然后使用 map 渲染您的检查对象

  var response = [{
    day_id: 1,
    day_name: "Monday",
    subcat_id: "2",
    cat_id: "1",
    comment: "hii"
  }, {
    day_id: 1,
    day_name: "Monday",
    subcat_id: "1",
    cat_id: "2",
    comment: "hello"
  }, {
    day_id: 2,
    day_name: "Tuesday",
    subcat_id: "3",
    cat_id: "2",
    comment: "hii"
  }];
  var responseNew = _.chain(response)
    .groupBy("day_id")
    .map(function(obj) {
      return {
        day_name: obj[0].day_name,
        day_id: obj[0].day_id,
        answers: obj.map(function(o) {
          return {
            cat_id: o.cat_id,
            subcat_id: o.subcat_id,
            comment: o.comment
          }
        })
      };
    });
console.log(responseNew);
$("#myPre").html(JSON.stringify(responseNew, null, 4));
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="myPre"></pre>