Сообщение от Artur_Hopf
|
А вообще как правильно соеденить 2 массива где совпадают поля.
|
если массивы небольшие, то вложенный цикл и сложность O(N*M), примерно так:
var a1 = [...], a2 = [...];
var a3 = [];
for (var i = 0; i < a1.length; ++i) {
var item = { a[i] ... }; // копируем данные из a1
a3.push(item); // забираем данные из a1
for (var j = 0; j < a2.length; ++j) {
if (item.xxx === a2[j].xxx) {
item.nnn = a2[j].nnn;
break;
}
}
}
если большие (десятки тыщ в каждом), то по одному из них создают объект-индекс, потом данные получают по индексу.
если совсем повезло и оба массива отсортированы по общему полю, можно параллельно обойти оба, линейное время на всё про всё.
если только один отсортирован, то поиск делением пополам.