16-ый день программы "#100 Days Of Code"
Задание звучит так:
Создайте функцию, которая просматривает массива (первый аргумент) и возвращает первый элемент в массиве, который проходит тест на истину (второй аргумент).
Рекомендуется воспользоваться Array.prototype.filter() - см. ссылку ниже.
Сразу на ум пришло простое решение:
function findElement(arr, func) { var num = 0; for(var i = 0; i < arr.length; i++){ if(func(arr[i])){ return arr[i]; } } } findElement([1, 2, 3, 4], function(num){ return num % 2 === 0; });
Решение достаточно простое - Перебирать массив arr циклом for, и если - в массиве будет число, при котором - if функция будет работать (true) - то есть выполнится ее условие - num % 2 === 0;
, то вернет найденное число в массиве.
Задние система приняла и посчитала выполненным, но меня не оставляло чувство, что я сделал что-то не совсем так, потому что не использовал предложенный метод filter().
Решил попробовать еще один вариант:
function findElement(arr, func) { return num = arr.filter(func)[0]; findElement([1, 2, 3, 4], function(num){ return num % 2 === 0; });
Здесь я воспользовался методом filter() для проверки массива на заданное условие - function(num) и вернул первый элемент, который подошел по условиям функции - [0].
Это необходимо было делать, потмоу что фильтрация массива - возвращает все элементы, которые подходят под эти условия.
Ответы:
findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; })
return 8.
findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; })
return undefined.
Комментариев нет:
Отправить комментарий