Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.07.2022, 12:09
Интересующийся
Отправить личное сообщение для AlexandrDr Посмотреть профиль Найти все сообщения от AlexandrDr
 
Регистрация: 22.11.2018
Сообщений: 11

Помогите преобразовать массив
Имеется массив объектов:
let a = [
{
  agentName: 'Иванов Иван Иванович',
  controlName: 'Петров Петр Петрович',
  flScore: 100
},
{
  agentName: 'Иванов Иван Иванович',
  controlName: 'Сидоров Сидр Сидорович',
  flScore: 95
 },
{
  agentName: 'Викторов Виктор Викторович',
  controlName: 'Тимуров Тимур Тимурович',
  flScore: 195
},
{
  agentName: 'Викторов Виктор Викторович',
  controlName: 'Тимуров Тимур Тимурович',
  flScore: 5
}
]


Из него нужно сделать массив объектов вида:
let result = [
{
  agentName:  'Иванов Иван Иванович',
  data1: {
               controlName: 'Сидоров Сидр Сидорович',
               flScore: 95
             },
  data2: {
              controlName: 'Петров Петр Петрович',
              flScore: 100
             }
},
{
 agentName: 'Викторов Виктор Викторович',
 data1: {
             controlName: 'Тимуров Тимур Тимурович',
             flScore: 195
            },
 data2: {
              controlName: 'Тимуров Тимур Тимурович',
              flScore: 5
            }
}
]
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2022, 13:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

AlexandrDr,
<pre id="out"></pre>
    <script>
        let a = [{
                agentName: 'Иванов Иван Иванович',
                controlName: 'Петров Петр Петрович',
                flScore: 100
            },
            {
                agentName: 'Иванов Иван Иванович',
                controlName: 'Сидоров Сидр Сидорович',
                flScore: 95
            },
            {
                agentName: 'Викторов Виктор Викторович',
                controlName: 'Тимуров Тимур Тимурович',
                flScore: 195
            },
            {
                agentName: 'Викторов Виктор Викторович',
                controlName: 'Тимуров Тимур Тимурович',
                flScore: 5
            }
        ]
        let obj = {},
            count = {};
        a = a.reduce((arr, {
            agentName,
            controlName,
            flScore
        }) => {
            let item = obj[agentName];
            if (!item) {
                item = {
                    agentName
                };
                arr.push(item);
                obj[agentName] = item;
                count[agentName] = 0;
            }
            let num = ++count[agentName];
            item[`data${num}`] = {
                controlName,
                flScore
            };
            return arr;
        }, []);
        out.append(JSON.stringify(a, '', 1))
    </script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как массив преобразовать в get-образную строку? nastya97core Общие вопросы Javascript 10 16.06.2021 19:44
Помогите сократить код (преобразовать в цикл) eko24 jQuery 5 09.11.2012 00:19
помогите преобразовать javascript в jquery Rayzor jQuery 1 13.09.2012 12:00
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30