Извлечение javascript и преобразование в новый массив

У меня есть следующий массив

[ {
            "contactId": "a87d096gd5fuop",
            "firstName": "John Doe",

            "registrationTypes": {
                "selectedOptions": [
                    {
                    }
                ],
                "subTotal": 1620.003
            },
            "foo1": {
                "selectedOptions": [
                ],
                "subTotal": 0
            },
         
            "events": {
                "selectedOptions": [
                    {
                        "id": "1",
                        "name": "T1",
                        "value": "4550006:3",
                    },
                    {
                        "id": "2",
                        "name": "T2",
                        "value": "4550005:3",
                    },
                    {
                        "id": "3",
                        "name": "T3",
                        "value": "4550003:3",
                    }
                ],
                "subTotal": 135.003
            },
            "freeNetworkingFunctions": {
            
            },

            "total": 1755.0059999999999
        },
        {
            "contactId": "a097f",
            "firstName": "David",

            "registrationTypes": {
                "selectedOptions": [
                   
                  {}
                ],
                "subTotal": 899.998
            },
            "foo1": {
                "selectedOptions": [
                 
                ],
                "subTotal": 0
            },
            "member": {
                "selectedOptions": [
                    {
                        
                    }
                ],
                "subTotal": 228.8
            },
            "events": {
                "selectedOptions": [
                    {
                        "id": "4",
                        "name": "T4",
                        "value": "4550002:2",
                     
                    },
                    {
                        "id": "5",
                        "name": "T5", 
                        "value": "4550001:2",
                       
                    },
                    {
                        "id": "6",
                        "name": "T6",
                        "value": "4550003:2",
                       
                    }
                ],
                "subTotal": 135.003
            },
           
            "total": 1263.801
        }
    ]

Из приведенного выше массива я хочу извлечь события, зациклить все данные и получить только значения. Итак, мой новый массив должен быть примерно таким:

[ {
    "contactId": "a87d096gd5fuop",
    "firstName": "John Doe",

    "registrationTypes": {
        "selectedOptions": [
            {
            }
        ],
        "subTotal": 1620.003
    },
    "foo1": {
        "selectedOptions": [
        ],
        "subTotal": 0
    },
 
    "events": [
        "4550006:3"
        "4550005:3",
        "4550003:3", 
    ],      

    },
    "freeNetworkingFunctions": {
    
    },

    "total": 1755.0059999999999
},
{
    "contactId": "a097f",
    "firstName": "David",

    "registrationTypes": {
        "selectedOptions": [
           
          {}
        ],
        "subTotal": 899.998
    },
    "foo1": {
        "selectedOptions": [
         
        ],
        "subTotal": 0
    },
    "member": {
        "selectedOptions": [
            {
                
            }
        ],
        "subTotal": 228.8
    },
    "events": [
        "4550004:2"
        "4550008:3",
        "4550003:3", 
    ],    
        "subTotal": 135.003
    },
   
    "total": 1263.801
}
]

Таким образом, он должен возвращать исходный массив, однако данные о значениях событий должны быть в одном массиве.

 var arr = [];
 var r(var i=0;i<data.length;i++){
    data.push(arr[i].value);
 }
 var newData = [...data, arr]

Однако это не работает. Любая помощь будет высоко оценен.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте map дважды: один раз в наборе данных для перебора объектов и внутри этого map для получения массива значений из selectedOptions.

const data=[{contactId:"a87d096gd5fuop",firstName:"John Doe",registrationTypes:{selectedOptions:[{}],subTotal:1620.003},foo1:{selectedOptions:[],subTotal:0},events:{selectedOptions:[{id:"1",name:"T1",value:"4550006:3"},{id:"2",name:"T2",value:"4550005:3"},{id:"3",name:"T3",value:"4550003:3"}],subTotal:135.003},freeNetworkingFunctions:{},total:1755.0059999999999},{contactId:"a097f",firstName:"David",registrationTypes:{selectedOptions:[{}],subTotal:899.998},foo1:{selectedOptions:[],subTotal:0},member:{selectedOptions:[{}],subTotal:228.8},events:{selectedOptions:[{id:"4",name:"T4",value:"4550002:2"},{id:"5",name:"T5",value:"4550001:2"},{id:"6",name:"T6",value:"4550003:2"}],subTotal:135.003},total:1263.801}];

const out = data.map(obj => {
  
  // Destructure the selected options from the
  // rest of each object
  const { events: { selectedOptions }, ...rest } = obj;
  
  // `map` over the options to just get an array of values
  const events = selectedOptions.map(option => {
    return option.value;
  });
  
  // Return a new object with the new events property
  // combined with the other properties again
  return { ...rest, events };

});

console.info(out);

Дополнительная документация

Другие вопросы по теме