为了账号安全,请及时绑定邮箱和手机立即绑定

谁可以通过嵌套对象进行映射并删除JavaScript中的键值对

谁可以通过嵌套对象进行映射并删除JavaScript中的键值对

HUX布斯 2021-05-05 16:21:46
我有一个array对象,我正在尝试创建一个新对象,但其中没有一key:value对特定对象。这是我的对象。{  "versionRoomPoolList": [{      "pmsRoomType": ["CITY"],      "versionRoomTypeAttributeList": [{          "attributeDisplayId": 2,          "attributeStatus": "NOCHANGE",          "attributeCode": "CV",          "attributeDescription": "City View"        },        {          "attributeDisplayId": 6,          "attributeStatus": "NOCHANGE",          "attributeCode": "HF",          "attributeDescription": "High Floor, 8th floor and above"        },        {          "attributeDisplayId": 4,          "attributeStatus": "NOCHANGE",          "attributeCode": "KN",          "attributeDescription": "1 King Bed"        },        {          "attributeDisplayId": 5,          "attributeStatus": "NOCHANGE",          "attributeCode": "NE",          "attributeDescription": "Near Elevator"        },        {          "attributeDisplayId": 7,          "attributeStatus": "NOCHANGE",          "attributeCode": "RF",          "attributeDescription": "Mobile Lock"        },        {          "attributeDisplayId": 3,          "attributeStatus": "NOCHANGE",          "attributeCode": "SB",          "attributeDescription": "Sofabed"        },所以我想做的是删除pmsRoomType每个对象中的。这是我为尝试解决此问题而编写的更大方法的一部分所写的内容。var data = {  versionRoomPoolList: array.map(roompools, function(roompool) {    roompool = lang.mixin({}, roompool);    delete roompool.numAttributeChars;    delete roompool.pmsRoomType;    delete roompool.versionRoomTypeList[0].pmsRoomType;    return roompool;  })};但是我一直收到以下错误:Uncaught TypeError: Cannot read property '0' of undefined我假设我需要编写另一种.map方法,但是我仍然坚持这样做,或者这是正确的方法吗?
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

您的数据不是数组,而是具有versionRoomPoolList字段的对象。


map 函数按顺序对数组中的每个元素调用提供的回调函数一次,然后从结果中构造一个新的数组。


我想这就是您要寻找的东西:创建新对象(data),将其versionRoomPoolList作为键,并将新数组作为值。


var rawData = {

  "versionRoomPoolList": [

    {

      "pmsRoomType": [

        "CITY"

      ],

      "versionRoomTypeAttributeList": [

        {

          "attributeDisplayId": 2,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "CV",

          "attributeDescription": "City View"

        },

        {

          "attributeDisplayId": 6,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "HF",

          "attributeDescription": "High Floor, 8th floor and above"

        },

        {

          "attributeDisplayId": 4,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "KN",

          "attributeDescription": "1 King Bed"

        },

        {

          "attributeDisplayId": 5,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "NE",

          "attributeDescription": "Near Elevator"

        },

        {

          "attributeDisplayId": 7,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "RF",

          "attributeDescription": "Mobile Lock"

        },

        {

          "attributeDisplayId": 3,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "SB",

          "attributeDescription": "Sofabed"

        },

        {

          "attributeDisplayId": 1,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "SU",

          "attributeDescription": "Alpine Guest Room"

        },

        {

          "attributeDisplayId": 8,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "TS",

          "attributeDescription": "Separate Shower and Bathtub"

        }

      ],

      "roomTypeDisplayId": 31,

      "roomTypeId": 21,

      "roomTypeStatus": "NOCHANGE",

      "roomPool": "CITY",

      "maxOccupancyStatus": "NOCHANGE",

      "newMaxOccupancy": 4,

      "currentMaxOccupancy": 4,

      "capacityStatus": "NOCHANGE",

      "newCapacity": 12,

      "currentCapacity": 12,

      "guaranteed": 9,

      "minAvailability": 1,

      "premium": false,

      "eliteAvailability": false,

      "isROH": false

    },

    {

      "versionRoomTypeList": [

        {

          "pmsRoomType": [

            "HOSP"

          ],

          "versionRoomTypeAttributeList": [

            {

              "attributeDisplayId": 2,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "CV",

              "attributeDescription": "City View"

            },

            {

              "attributeDisplayId": 5,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "HF",

              "attributeDescription": "High Floor, 8th floor and above"

            },

            {

              "attributeDisplayId": 1,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "HS",

              "attributeDescription": "Hospitality Suite"

            },

            {

              "attributeDisplayId": 4,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "KN",

              "attributeDescription": "1 King Bed"

            },

            {

              "attributeDisplayId": 6,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "RF",

              "attributeDescription": "Mobile Lock"

            },

            {

              "attributeDisplayId": 3,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "SB",

              "attributeDescription": "Sofabed"

            },

            {

              "attributeDisplayId": 7,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "TS",

              "attributeDescription": "Separate Shower and Bathtub"

            }

          ],

          "roomTypeDisplayId": 34,

          "roomTypeId": 24,

          "roomTypeStatus": "NOCHANGE",

          "roomPool": "HOSP",

          "maxOccupancyStatus": "NOCHANGE",

          "newMaxOccupancy": 4,

          "currentMaxOccupancy": 4,

          "capacityStatus": "NOCHANGE",

          "newCapacity": 1,

          "currentCapacity": 1,

          "guaranteed": 1,

          "minAvailability": 1,

          "premium": true,

          "eliteAvailability": false,

          "isROH": true

        },

        {

          "pmsRoomType": [

            "HOSP"

          ],

          "versionRoomTypeAttributeList": [

            {

              "attributeDisplayId": 2,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "CV",

              "attributeDescription": "City View"

            },

            {

              "attributeDisplayId": 6,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "HF",

              "attributeDescription": "High Floor, 8th floor and above"

            },

            {

              "attributeDisplayId": 1,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "HS",

              "attributeDescription": "Hospitality Suite"

            },

            {

              "attributeDisplayId": 4,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "KN",

              "attributeDescription": "1 King Bed"

            },

            {

              "attributeDisplayId": 5,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "NE",

              "attributeDescription": "Near Elevator"

            },

            {

              "attributeDisplayId": 7,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "RF",

              "attributeDescription": "Mobile Lock"

            },

            {

              "attributeDisplayId": 3,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "SB",

              "attributeDescription": "Sofabed"

            },

            {

              "attributeDisplayId": 8,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "TS",

              "attributeDescription": "Separate Shower and Bathtub"

            }

          ],

          "roomTypeDisplayId": 35,

          "roomTypeId": 25,

          "roomTypeStatus": "NOCHANGE",

          "roomPool": "HOSP",

          "maxOccupancyStatus": "NOCHANGE",

          "newMaxOccupancy": 4,

          "currentMaxOccupancy": 4,

          "capacityStatus": "NOCHANGE",

          "newCapacity": 1,

          "currentCapacity": 1,

          "guaranteed": 1,

          "minAvailability": 1,

          "premium": true,

          "eliteAvailability": false,

          "isROH": false

        }

      ],

      "roomPoolDisplayId": 4,

      "roomPoolStatus": "NOCHANGE",

      "roomPoolCode": "HOSP",

      "miosSRC": "YD",

      "sna": "N",

      "maxOccupancyStatus": "NOCHANGE",

      "newMaxOccupancy": 4,

      "currentMaxOccupancy": 4,

      "capacityStatus": "NOCHANGE",

      "newCapacity": 2,

      "currentCapacity": 2,

      "premium": true,

      "eliteAvailability": false,

      "excludeAlways": false,

      "excludeOverAuth": false,

      "propertySellOnly": false

    },

    {

      "pmsRoomType": [

        "HOSP"

      ],

      "versionRoomTypeAttributeList": [

        {

          "attributeDisplayId": 2,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "CV",

          "attributeDescription": "City View"

        },

        {

          "attributeDisplayId": 5,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "HF",

          "attributeDescription": "High Floor, 8th floor and above"

        },

        {

          "attributeDisplayId": 1,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "HS",

          "attributeDescription": "Hospitality Suite"

        },

        {

          "attributeDisplayId": 4,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "KN",

          "attributeDescription": "1 King Bed"

        },

        {

          "attributeDisplayId": 6,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "RF",

          "attributeDescription": "Mobile Lock"

        },

        {

          "attributeDisplayId": 3,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "SB",

          "attributeDescription": "Sofabed"

        },

        {

          "attributeDisplayId": 7,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "TS",

          "attributeDescription": "Separate Shower and Bathtub"

        }

      ],

      "roomTypeDisplayId": 34,

      "roomTypeId": 24,

      "roomTypeStatus": "NOCHANGE",

      "roomPool": "HOSP",

      "maxOccupancyStatus": "NOCHANGE",

      "newMaxOccupancy": 4,

      "currentMaxOccupancy": 4,

      "capacityStatus": "NOCHANGE",

      "newCapacity": 1,

      "currentCapacity": 1,

      "guaranteed": 1,

      "minAvailability": 1,

      "premium": true,

      "eliteAvailability": false,

      "isROH": true

    }

  ]

}


var data = {

  versionRoomPoolList: rawData.versionRoomPoolList.map(function(roompool) {

    roompool = Object.assign({}, roompool);

    delete roompool.numAttributeChars;

    delete roompool.pmsRoomType;

    // make sure `versionRoomTypeList` is existed

    roompool.versionRoomTypeList && delete roompool.versionRoomTypeList[0].pmsRoomType;

    return roompool;

  })

};

console.log(data)



查看完整回答
反对 回复 2021-05-20
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您可以尝试如下操作:


const data = {

  "versionRoomPoolList": [{

      "pmsRoomType": ["CITY"],

      "versionRoomTypeAttributeList": [{

          "attributeDisplayId": 2,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "CV",

          "attributeDescription": "City View"

        },

        {

          "attributeDisplayId": 6,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "HF",

          "attributeDescription": "High Floor, 8th floor and above"

        },

        {

          "attributeDisplayId": 4,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "KN",

          "attributeDescription": "1 King Bed"

        },

        {

          "attributeDisplayId": 5,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "NE",

          "attributeDescription": "Near Elevator"

        },

        {

          "attributeDisplayId": 7,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "RF",

          "attributeDescription": "Mobile Lock"

        },

        {

          "attributeDisplayId": 3,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "SB",

          "attributeDescription": "Sofabed"

        },

        {

          "attributeDisplayId": 1,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "SU",

          "attributeDescription": "Alpine Guest Room"

        },

        {

          "attributeDisplayId": 8,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "TS",

          "attributeDescription": "Separate Shower and Bathtub"

        }

      ],

      "roomTypeDisplayId": 31,

      "roomTypeId": 21,

      "roomTypeStatus": "NOCHANGE",

      "roomPool": "CITY",

      "maxOccupancyStatus": "NOCHANGE",

      "newMaxOccupancy": 4,

      "currentMaxOccupancy": 4,

      "capacityStatus": "NOCHANGE",

      "newCapacity": 12,

      "currentCapacity": 12,

      "guaranteed": 9,

      "minAvailability": 1,

      "premium": false,

      "eliteAvailability": false,

      "isROH": false

    },

    {

      "versionRoomTypeList": [{

          "pmsRoomType": ["HOSP"],

          "versionRoomTypeAttributeList": [{

              "attributeDisplayId": 2,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "CV",

              "attributeDescription": "City View"

            },

            {

              "attributeDisplayId": 5,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "HF",

              "attributeDescription": "High Floor, 8th floor and above"

            },

            {

              "attributeDisplayId": 1,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "HS",

              "attributeDescription": "Hospitality Suite"

            },

            {

              "attributeDisplayId": 4,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "KN",

              "attributeDescription": "1 King Bed"

            },

            {

              "attributeDisplayId": 6,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "RF",

              "attributeDescription": "Mobile Lock"

            },

            {

              "attributeDisplayId": 3,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "SB",

              "attributeDescription": "Sofabed"

            },

            {

              "attributeDisplayId": 7,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "TS",

              "attributeDescription": "Separate Shower and Bathtub"

            }

          ],

          "roomTypeDisplayId": 34,

          "roomTypeId": 24,

          "roomTypeStatus": "NOCHANGE",

          "roomPool": "HOSP",

          "maxOccupancyStatus": "NOCHANGE",

          "newMaxOccupancy": 4,

          "currentMaxOccupancy": 4,

          "capacityStatus": "NOCHANGE",

          "newCapacity": 1,

          "currentCapacity": 1,

          "guaranteed": 1,

          "minAvailability": 1,

          "premium": true,

          "eliteAvailability": false,

          "isROH": true

        },

        {

          "pmsRoomType": ["HOSP"],

          "versionRoomTypeAttributeList": [{

              "attributeDisplayId": 2,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "CV",

              "attributeDescription": "City View"

            },

            {

              "attributeDisplayId": 6,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "HF",

              "attributeDescription": "High Floor, 8th floor and above"

            },

            {

              "attributeDisplayId": 1,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "HS",

              "attributeDescription": "Hospitality Suite"

            },

            {

              "attributeDisplayId": 4,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "KN",

              "attributeDescription": "1 King Bed"

            },

            {

              "attributeDisplayId": 5,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "NE",

              "attributeDescription": "Near Elevator"

            },

            {

              "attributeDisplayId": 7,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "RF",

              "attributeDescription": "Mobile Lock"

            },

            {

              "attributeDisplayId": 3,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "SB",

              "attributeDescription": "Sofabed"

            },

            {

              "attributeDisplayId": 8,

              "attributeStatus": "NOCHANGE",

              "attributeCode": "TS",

              "attributeDescription": "Separate Shower and Bathtub"

            }

          ],

          "roomTypeDisplayId": 35,

          "roomTypeId": 25,

          "roomTypeStatus": "NOCHANGE",

          "roomPool": "HOSP",

          "maxOccupancyStatus": "NOCHANGE",

          "newMaxOccupancy": 4,

          "currentMaxOccupancy": 4,

          "capacityStatus": "NOCHANGE",

          "newCapacity": 1,

          "currentCapacity": 1,

          "guaranteed": 1,

          "minAvailability": 1,

          "premium": true,

          "eliteAvailability": false,

          "isROH": false

        }

      ],

      "roomPoolDisplayId": 4,

      "roomPoolStatus": "NOCHANGE",

      "roomPoolCode": "HOSP",

      "miosSRC": "YD",

      "sna": "N",

      "maxOccupancyStatus": "NOCHANGE",

      "newMaxOccupancy": 4,

      "currentMaxOccupancy": 4,

      "capacityStatus": "NOCHANGE",

      "newCapacity": 2,

      "currentCapacity": 2,

      "premium": true,

      "eliteAvailability": false,

      "excludeAlways": false,

      "excludeOverAuth": false,

      "propertySellOnly": false

    },

    {

      "pmsRoomType": ["HOSP"],

      "versionRoomTypeAttributeList": [{

          "attributeDisplayId": 2,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "CV",

          "attributeDescription": "City View"

        },

        {

          "attributeDisplayId": 5,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "HF",

          "attributeDescription": "High Floor, 8th floor and above"

        },

        {

          "attributeDisplayId": 1,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "HS",

          "attributeDescription": "Hospitality Suite"

        },

        {

          "attributeDisplayId": 4,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "KN",

          "attributeDescription": "1 King Bed"

        },

        {

          "attributeDisplayId": 6,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "RF",

          "attributeDescription": "Mobile Lock"

        },

        {

          "attributeDisplayId": 3,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "SB",

          "attributeDescription": "Sofabed"

        },

        {

          "attributeDisplayId": 7,

          "attributeStatus": "NOCHANGE",

          "attributeCode": "TS",

          "attributeDescription": "Separate Shower and Bathtub"

        }

      ],

      "roomTypeDisplayId": 34,

      "roomTypeId": 24,

      "roomTypeStatus": "NOCHANGE",

      "roomPool": "HOSP",

      "maxOccupancyStatus": "NOCHANGE",

      "newMaxOccupancy": 4,

      "currentMaxOccupancy": 4,

      "capacityStatus": "NOCHANGE",

      "newCapacity": 1,

      "currentCapacity": 1,

      "guaranteed": 1,

      "minAvailability": 1,

      "premium": true,

      "eliteAvailability": false,

      "isROH": true

    }

  ]

}


const myFunction = data => ({

  ...data,

  versionRoomPoolList: data.versionRoomPoolList.filter(i => {

    delete i.pmsRoomType;

    return i;

  }),

});


console.log(myFunction(data))


查看完整回答
反对 回复 2021-05-20
?
守候你守候我

TA贡献1802条经验 获得超10个赞

您的代码大部分是正确的,并且正如Felix Kling在您的帖子中评论的那样,您只需要防止出现不存在的属性即可。这可以很简单:


if (roompool.versionRoomTypeList && roompool.versionRoomTypeList.length) {

  // delete

}

就是说...我怀疑您只是打字错误,您应该更改versionRoomTypeList为versionRoomTypeAttributeList:-P


查看完整回答
反对 回复 2021-05-20
  • 3 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信