Javascript.RU

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

Помогите собрать объект
Пожалуйста помогите из массива объектов

let arr = [
    {category: 'Жалоба', status: 'Ожидание', fio: 'Иванов Иван Иванович', total: 3},
    {category: 'Жалоба', status: 'Закрыт', fio: 'Иванов Иван Иванович', total: 23},
    {category: 'Благодарность', status: 'Ожидание', fio: 'Иванов Иван Иванович', total: 5},
    {category: 'Благодарность', status: 'Принята', fio: 'Иванов Иван Иванович', total: 7},
    {category: 'Жалоба', status: 'Ожидание', fio: 'Сидоров Сидр Сидорович', total: 2},
    {category: 'Жалоба', status: 'Принята', fio: 'Сидоров Сидр Сидорович', total: 9}
]


сделать массив объектов
let result = [
    {fio: 'Иванов Иван Иванович', Жалоба: {Ожидание: 3, Закрыт: 23}, Благодарность: {Ожидание: 5, Принята: 7}},
    {fio: 'Сидоров Сидр Сидорович', Жалоба: {Ожидание: 2, Принята: 9}}
]
Ответить с цитированием
  #2 (permalink)  
Старый 06.04.2022, 15:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

AlexandrDr,
<pre>
  <script>
let arr = [
    {category: 'Жалоба', status: 'Ожидание', fio: 'Иванов Иван Иванович', total: 3},
    {category: 'Жалоба', status: 'Закрыт', fio: 'Иванов Иван Иванович', total: 23},
    {category: 'Благодарность', status: 'Ожидание', fio: 'Иванов Иван Иванович', total: 5},
    {category: 'Благодарность', status: 'Принята', fio: 'Иванов Иван Иванович', total: 7},
    {category: 'Жалоба', status: 'Ожидание', fio: 'Сидоров Сидр Сидорович', total: 2},
    {category: 'Жалоба', status: 'Принята', fio: 'Сидоров Сидр Сидорович', total: 9}
]
function createObj(arr)
{
   return Object.values(arr.reduce((obj, {category, status, fio, total}) => {
   if(!obj[fio]) obj[fio] = {fio};
   if(!obj[fio][category]) obj[fio][category] = {}
   if(!obj[fio][category][status]) obj[fio][category][status] = 0;
   obj[fio][category][status] += total;
   return obj;
   }, {}))
}
let obj = createObj(arr)
document.write(JSON.stringify(obj, "", 1))

</script>
</pre>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полностью удалить объект 1lider Events/DOM/Window 8 07.06.2018 18:20
не получается собрать объект yintar jQuery 0 29.07.2015 09:44
не получается собрать объект yintar Элементы интерфейса 0 29.07.2015 09:42
Помогите определить массив или объект ksnovich Общие вопросы Javascript 1 09.03.2015 17:12
Объект ajax и приостановка функции kilohertz_. AJAX и COMET 5 18.01.2015 16:33