Использование карты для пары значений объекта со значением массива, вложенным в другую функцию карты в javascript - PullRequest
0 голосов
/ 28 мая 2020

У меня есть данные JSON, и я хотел бы создать аналогичный объект JSON с использованием функций карты, однако вложенные методы .map() возвращают тип данных, а не фактические данные для вывода.

У меня есть эти начальные данные:

{
        "id": 111,
        "other_id": 111,
        "name": "name",
        "display_name": "display name",
        "type": "type",
        "required": true,
        "sort_order": 0,
        "config": {
            "config_one": true,
            "config_two": true,
            "config_three": "weight"
        },
        "option_values": [
            {
                "id": 2222,
                "other_option_id": 2222,
                "label": "Option Value Label",
                "sort_order": 0,
                "value_data": {
                    "separate_object_id": 3333
                },
                "is_default": false,
                "adjusters": {
                    "price": null,
                    "weight": null,
                    "image_url": "",
                    "enable_disable_flag": {
                        "status": false,
                        "message": ""
                    }
                }
            }
        ]
    }

И я хотел бы, чтобы эти данные отображались после функции карты:

{
    "display_name": "display name",
    "type": "type",
    "required": true,
    "sort_order": 0,
    "config": {
            "config_one": true,
            "config_two": true,
            "config_three": "weight"
    },
    "option_values": [
        {
            "label": "Option Value Label",
            "sort_order": 0,
            "value_data": {
                "separate_object_id": 3333
            },
            "is_default": false,
            "adjusters": {
                "price": null,
                "weight": null,
                "image_url": "",
                "enable_disable_flag": {
                    "status": false,
                    "message": ""
                }
            }
        }
    ]
}

Это моя текущая функция метода карты, которую я Использую, что не работает:

  modifier.map(item => {
      let returnedItem = {
        display_name: item.display_name,
        type: item.type,
        required: item.required,
        sort_order: item.sort_order,
        config: item.config,
        option_values: item.option_values.map(opt_valItems => ({ 
          label: opt_valItems.label, 
          sort_order: opt_valItems.sort_order,
          value_data: opt_valItems.value_data,
          is_default: opt_valItems.is_default,
          adjusters: item.adjusters
        }))
      }  
    })

1 Ответ

2 голосов
/ 28 мая 2020

Map всегда возвращает новый массив. Поэтому вам нужно присвоить это новой переменной. Кроме того, в вашем коде была небольшая проблема. Вы использовали let returnedItem внутри map, но ничего не возвращали. Исправлено.

var modifier = [{
        "id": 111,
        "other_id": 111,
        "name": "name",
        "display_name": "display name",
        "type": "type",
        "required": true,
        "sort_order": 0,
        "config": {
            "config_one": true,
            "config_two": true,
            "config_three": "weight"
        },
        "option_values": [
            {
                "id": 2222,
                "other_option_id": 2222,
                "label": "Option Value Label",
                "sort_order": 0,
                "value_data": {
                    "separate_object_id": 3333
                },
                "is_default": false,
                "adjusters": {
                    "price": null,
                    "weight": null,
                    "image_url": "",
                    "enable_disable_flag": {
                        "status": false,
                        "message": ""
                    }
                }
            }
        ]
    }]


 var x = modifier.map(item => {
      return {
        display_name: item.display_name,
        type: item.type,
        required: item.required,
        sort_order: item.sort_order,
        config: item.config,
        option_values: item.option_values.map(opt_valItems => ({ 
          label: opt_valItems.label, 
          sort_order: opt_valItems.sort_order,
          value_data: opt_valItems.value_data,
          is_default: opt_valItems.is_default,
          adjusters: item.adjusters
        }))
      }  
    });
    
    console.log(x)
...