У меня есть значения удерживания массива "A" [a, b] и значения "B" в массиве [b, c]; Я хочу использовать каждую строку массива "A" как логический фильтр и цикл через каждую строку "B";
Что я делаю:
A.foreach(function(e) { // pick row n from A
B.foreach(function(x) { // run trough B
if (e.value === x.value) { // business logic
console.log(result);
}
});
});
Вопрос - это приемлемый подход (вложенный foreach в другой foreach)
Для примитивов (и ссылок на объекты):
const result = A.filter( el => B.includes(el));
Для равенства ключа объекта:
const result = A.filter(
el => B.some(
el2 => el.value === el2.value
)
);
Вложенные forEachs являются полностью действительными, однако в этом случае я бы предпочел бы просто для циклов, поскольку они являются гибкими:
for(const el of A){
for(const el2 of B){
if(el.value === el2.value){
alert("found it");
break;//O(log n) instead of O(n)
}
}
}
I want to use each row of array "A" as a logical filter and cycle trough every row of "B";
ответили, да.
Вы можете попробовать:
И ofCourse это приемлемый подход для написания forech внутри foreach, но когда данные слишком длинны, то медленнее, а его сложность будет O (n2).
var A=['a','b'];
var B=['b','c'];
A.forEach(function(e) { // pick row n from A
B.forEach(function(x) { // run trough B
if (e.value === x.value) { // business logic
console.log(x.value);
}
});
});