Задать вопрос
  • Как объединить массив с повторяющимися объектами?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Если тупо получать то, что указано в тексте вопроса, тогда

    const result = Object
      .entries(arr.reduce((acc, n) => ((acc[n.name] ??= []).push(n.value), acc), {}))
      .reduce((acc, [ k, v ]) => (acc[k] = v.length === 1 || v, acc), {});

    Но почему

    ThirdName: true

    ??

    В самом деле так и надо, или всё-таки там должна быть строка с датой из исходного массива? А что если значения повторяются? Вот вариант с получением только уникальных значений и без дурацкого true там, где значение одно:

    const result = Object
      .entries(arr.reduce((acc, n) => ((acc[n.name] ??= new Set).add(n.value), acc), {}))
      .reduce((acc, [ k, [...v] ]) => (acc[k] = ~-v.length ? v : v[0], acc), {});
    Ответ написан
    2 комментария