Niklaus Wirth

Niklaus Wirth

Translate

Функция метода filter() - Finders Keepers(16)


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.


Комментариев нет:

Отправить комментарий