одного массива в другом?
Суть: есть два массива 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 элементов. Если делать двумя циклами, то, понятное дело, это сумашествие, а мне что-то то ли в силу усталости, то ли моей тупости уже ничего другого и не приходит на ум.
делай с массива, который меньше по длину мапу, а сам иди по тому, который длинный
как вариант можно второй массив индексировать по id
Могу показать решение😁
Как то так. const array2 = { "id": "...", "id": "...", "..." "..." };
а если нужно совпадение по всем параметрам, а не только по id?
Это самое неэффективное решение, я про него писал))
замапь второй массив по ключевому свойству, потом обходи первый массив и ищи в мапе нужные данные, сложность линейная будет
не совсем понял… Но пока сделал такое решение https://jsfiddle.net/3wb9srk2/ завтра подумаю, насколько оно эффективное или может вообще не подходит
https://jsfiddle.net/19m4Lzvq/1/
Обсуждают сегодня