@jizzy

Как удалить дубликат в массиве и пушнуть массив объекта дубликата?

Есть массив:
array   : [     {
                "name": "test",
                "id": "1",
                "array1": [
                    {
                        "name": "Jack",
                        "id": "123",
                    }
                ]
            },
            {
                "name": "test",
                "id": "1",
                "array1": [
                    {
                        "name": "Igor",
                        "id": "985",
                    }
                ]
            }
]

Надо сделать его таким:
array   : [     {
                "name": "test",
                "id": "1",
                "array1": [
                    {
                        "name": "Jack",
                        "id": "123",
                    },
                    {
                        "name": "Igor",
                        "id": "985",
                    }
                ]
            }
]
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values(arr.reduce((acc, n) => {
  (acc[n.id] ||= { ...n, array1: [] }).array1.push(...n.array1);
  return acc;
}, {}))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dimoff66
Кратко о себе: Я есть
const mapIds = {}
const filtered = array.filter(elem => {
  const existingElement = mapIds[elem.id]
  if (!existingElement) 
    mapIds[elem.id] = elem
  else  
    existingElement.array1.push(...elem.array1)

  return !existingElement
})


Либо если выпендриться с filter в одну строчку, то

const mapIds = {}
const filtered = array.filter(elem => 
  (!mapIds[elem.id] && (mapIds[elem.id] = elem)) || !mapIds[elem.id].array1.push(...elem.array1)
)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 окт. 2020, в 05:59
5000 руб./за проект
30 окт. 2020, в 03:15
2500 руб./за проект