209 похожих чатов

Ребят, всем привет! Может кто-нибудь подсказать алгоритм, как правильно найти совпадения

одного массива в другом?

Суть: есть два массива https://jsfiddle.net/7rv9Lafc/


const array1 = [
{
id: 1,
name: '1',
},
{
id: 2,
name: '2',
},
{
id: 3,
name: '3',
}
];

const array2 = [
{
id: 2,
name: '2',
}
];


И вот нужно в первом массиве найти совпадения из второго и данным элементам добавить новое свойство, т.е. первый массив должен получиться вот таким:


const array1 = [
{
id: 1,
name: '1',
},
{
id: 2,
name: '2',
selected: true,
},
{
id: 3,
name: '3',
}
];


Проблема оптимизации кажется не такой важной в указанном примере, но на проде реалии такие, что в первом массиве может быть порядка 5к элементов, а во втором порядка 100 элементов. Если делать двумя циклами, то, понятное дело, это сумашествие, а мне что-то то ли в силу усталости, то ли моей тупости уже ничего другого и не приходит на ум.

11 ответов

10 просмотров

делай с массива, который меньше по длину мапу, а сам иди по тому, который длинный

как вариант можно второй массив индексировать по id

Могу показать решение😁

Как то так. const array2 = { "id": "...", "id": "...", "..." "..." };

Naim Shamsudinov
Как то так. const array2 = { "id": "...", "...

а если нужно совпадение по всем параметрам, а не только по id?

Владимир-Дегтярев Автор вопроса

Это самое неэффективное решение, я про него писал))

замапь второй массив по ключевому свойству, потом обходи первый массив и ищи в мапе нужные данные, сложность линейная будет

Владимир-Дегтярев Автор вопроса
Кирилл Глазунов
замапь второй массив по ключевому свойству, потом ...

не совсем понял… Но пока сделал такое решение https://jsfiddle.net/3wb9srk2/ завтра подумаю, насколько оно эффективное или может вообще не подходит

Похожие вопросы

Карта сайта