Middle+
Կատարեք asyncFilter ֆունկցիան, որը ընդունում է թվերի զանգված և ասինխրոն ֆիլտրի ֆունկցիա, և վերադարձնում է ֆիլտրացված զանգված: Օրինակ, մուտք [1, 2, 3] և ֆունկցիա, որը թողնում է միայն անհատ թվերը, ելքը պետք է լինի [1, 3]:
sobes.tech AI
Պատասխան AI-ից
Функция asyncFilter должна последовательно или параллельно применять асинхронный предикат к каждому элементу массива и возвращать новый массив с элементами, для которых предикат вернул true. Вот пример реализации на JavaScript с использованием Promise.all для параллельной обработки:
async function asyncFilter(arr, predicate) {
const results = await Promise.all(arr.map(predicate));
return arr.filter((_, index) => results[index]);
}
// Пример использования:
async function isOdd(num) {
return num % 2 !== 0;
}
asyncFilter([1, 2, 3], isOdd).then(filtered => {
console.log(filtered); // [1, 3]
});
Здесь мы сначала запускаем предикат для всех элементов, ждём результатов, а затем фильтруем исходный массив по полученным булевым значениям.