С lodash вы можете использовать объединение _.forEach()
с _.find()
, поскольку _.find()
возвращается немедленно, когда предикат возвращает true
.Когда _.find()
возвращает результат, присвойте его result
и верните false
, чтобы выйти из _.forEach()
:
function findItem(elements: any, itemName: string): boolean {
let result = null;
_.forEach(elements, (element: any) => {
const res = _.find(element.items, item => item.name === itemName);
if(res) {
result = res;
return false;
}
}
return result;
}
В ванильном JS / машинописном тексте вы можете использовать вложенный for...of
зацикливается и возвращает предмет, когда вы его найдете:
function findItem(elements: any, itemName: string): boolean {
for(const el of elements) {
for(const item of el.items) {
if (item.name === itemName) {
return item;
}
}
}
return null;
}