【问题标题】:Rearrange a JSON重新排列 JSON
【发布时间】:2017-12-05 17:07:18
【问题描述】:

我有一个这样的 JSON:

"hotel": [
{
    "id": 90091,
    "hotelGroup": "A1",
    "hotelRoom": [
    {
        "name":"Room1",
        "minimumQuantity": 1,
        "maximumQuantity": 6,
    },
    {
        "name":"Room2",
        "minimumQuantity": 7,
        "maximumQuantity": 12,
    }
]},
{
    "id": 90089,
    "hotelGroup": "A4",
    "hotelRoom": [
    {
        "name":"Room1",
        "minimumQuantity": 0,
        "maximumQuantity": 0,
    }]
}]

我尝试将 JSON 重新排列为以下格式:

hotel = [{
    name: "Room1",
    RoomInfo: [{
        hotelGroup: "A1",
        Stops: [
            {"minimumQuantity": 1,"maximumQuantity": 6}
        ]}, 
        {
            hotelGroup: "A4",
            Stops: [
                {"minimumQuantity": 0,"maximumQuantity": 0}
            ]
        }
   ]}, 
   {
       name: "Room2",
       RoomInfo: [{
           Name: "A1",
           Stops: [
               {"minimumQuantity": 7,"maximumQuantity": 12}
           ]
      }]
 }]

有人可以帮忙吗? 我想按酒店名称分组。每个酒店名称都有自己的酒店集团和停靠点。

谢谢

【问题讨论】:

  • 你有没有尝试过?
  • 嗨,我曾尝试重新排列结构,但我可以重新排列到 RoomInfo。但未能在 RoomInfo 中列出停靠点

标签: javascript angularjs json angularjs-ng-repeat


【解决方案1】:

显然将您的 JSON 转换为常规数组,但您明白了。

const hotel = [{
    "id": 90091,
    "hotelGroup": "A1",
    "hotelRoom": [{
        "name": "Room1",
        "minimumQuantity": 1,
        "maximumQuantity": 6,
      },
      {
        "name": "Room2",
        "minimumQuantity": 7,
        "maximumQuantity": 12,
      }
    ]
  },
  {
    "id": 90089,
    "hotelGroup": "A4",
    "hotelRoom": [{
      "name": "Room1",
      "minimumQuantity": 0,
      "maximumQuantity": 0,
    }]
  }
];

const newHotels = hotel.map(obj => {
  const { hotelGroup, hotelRoom } = obj;
  const newObj = {};

  newObj['name'] = hotelRoom[0]['name'];

  newObj['RoomInfo'] = hotelRoom.map(({ minimumQuantity, maximumQuantity }) => {
    return {
      hotelGroup,
      Stops: [{
        minimumQuantity,
        maximumQuantity
      }]
    };
  });
  
  return newObj;
});

console.log(newHotels);

【讨论】:

  • 您好,感谢您的帮助。
  • 我觉得很难做到。
  • 我尝试将 JSON 重新排列为 1 级 JSON(未嵌套)。
  • var tmp = {} $scope.data.forEach(function (newHotels) { var tempKey = newHotels.name; if (!tmp.hasOwnProperty(tempKey)) { tmp[tempKey] = { " name": item.name, "RoomInfo": [] }; } tmp[tempKey].RoomInfo.push(newHotels); }); $scope.results = Object.keys(tmp).map(function (key) { return tmp[key]; });
  • 我会把它变成一个新问题。
猜你喜欢
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 2019-09-18
  • 2014-10-12
  • 2020-07-16
  • 2015-10-31
相关资源
最近更新 更多