Javascript.RU

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

Помогите объединить объекты.
Добрый день.

Что-то я никак не соображу как сделать

Есть массив объектов:
let arr = [
{
    "ASSIGNEE": "Иванова Татьяна",
    "SUBCATEGORY": "Обратная связь",
    "AVERAGE_TTL": 279
  },
  {
    "ASSIGNEE": "Иванова Татьяна",
    "SUBCATEGORY": "Обратная связь от КК",
    "AVERAGE_TTL": 4
  },
  {
    "ASSIGNEE": "Петрова Валентина",
    "SUBCATEGORY": "Обратная связь",
    "AVERAGE_TTL": 4
  },
  {
    "ASSIGNEE": "Петрова Валентина",
    "SUBCATEGORY": "Обратная связь от КК",
    "AVERAGE_TTL": 114
  },
]


Мне необходимо из них получить массив такого вида:
let arr2 = [
{
    "ASSIGNEE": "Иванова Татьяна",
    "Обратная связь": 279,
    "Обратная связь от КК": 4
  },
  {
    "ASSIGNEE": "Петрова Валентина",
    "Обратная связь": 4,
    "Обратная связь от КК": 114
  }
]

Т.е по имени человека объединить и вывести поля SUBCATEGORY и AVERAGE_TTL в связке друг с другом
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2022, 16:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

AlexandrDr,
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="el of array_out">
                {{el}}
            </li>
        </ul>
    </div>
    <script>
        const webstore = new Vue({
            el: '#app',
            data() {
                return {
                    array_in: [{
                            "ASSIGNEE": "Иванова Татьяна",
                            "SUBCATEGORY": "Обратная связь",
                            "AVERAGE_TTL": 279
                        },
                        {
                            "ASSIGNEE": "Иванова Татьяна",
                            "SUBCATEGORY": "Обратная связь от КК",
                            "AVERAGE_TTL": 4
                        },
                        {
                            "ASSIGNEE": "Петрова Валентина",
                            "SUBCATEGORY": "Обратная связь",
                            "AVERAGE_TTL": 4
                        },
                        {
                            "ASSIGNEE": "Петрова Валентина",
                            "SUBCATEGORY": "Обратная связь от КК",
                            "AVERAGE_TTL": 114
                        },
                    ],
                    array_out: []
                }
            },
            created() {
                this.array_out = this.getArray(this.array_in);
                
            },
            methods: {
                getArray(arr) {
                    let obj_name = {};
                    let arr_calculated = [];
                    arr.forEach(({
                        ASSIGNEE,
                        SUBCATEGORY,
                        AVERAGE_TTL
                    }) => {
                        if (obj_name[ASSIGNEE]) {
                            obj_name[ASSIGNEE][SUBCATEGORY] = AVERAGE_TTL
                        } else {
                            obj_name[ASSIGNEE] = {
                                ASSIGNEE,
                                [SUBCATEGORY]: AVERAGE_TTL
                            }
                            arr_calculated.push(obj_name[ASSIGNEE])
                        }
                    })
                    return arr_calculated;
                }
            },
        });
    </script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2022, 16:15
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Без всякого вуя
let arr = [
{
    "ASSIGNEE": "Иванова Татьяна",
    "SUBCATEGORY": "Обратная связь",
    "AVERAGE_TTL": 279
  },
  {
    "ASSIGNEE": "Иванова Татьяна",
    "SUBCATEGORY": "Обратная связь от КК",
    "AVERAGE_TTL": 4
  },
  {
    "ASSIGNEE": "Петрова Валентина",
    "SUBCATEGORY": "Обратная связь",
    "AVERAGE_TTL": 4
  },
  {
    "ASSIGNEE": "Петрова Валентина",
    "SUBCATEGORY": "Обратная связь от КК",
    "AVERAGE_TTL": 114
  },
]

const m = new Map()
arr.forEach(o => {
	const ass = o.ASSIGNEE;
	if (!m.has(ass) ) m.set (ass, {"ASSIGNEE": ass})
	const mo = m.get(ass)
	mo[o.SUBCATEGORY] = o.AVERAGE_TTL
})

let arr2 = [...m.values()]

console.log (arr2)

Последний раз редактировалось voraa, 01.02.2022 в 16:22.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ext4.2 Как в конструкторе объединить конфигурацию при наследовании small75 ExtJS 4 11.12.2017 11:18
Помогите сделать выпадающий список? maks777 Общие вопросы Javascript 18 19.09.2016 17:56
Помогите сделать выпадающий список? maks777 Общие вопросы Javascript 1 19.09.2016 13:19
Как удалить объекты select D_Sergeevich Элементы интерфейса 3 16.09.2014 21:13
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50