Запрос итераций функций - PullRequest
0 голосов
/ 25 декабря 2018

Мне дали задание создать функцию, которая перебирает массив.Ниже то, что у меня есть, но я получаю undefined.Чего мне не хватает?

function lookingForDave(arr) {
  for (var i = 0; i < arr; i++) {
    if (array.forEach === 'Dave') {
      return 'I found him';
    } else {
      return 'Not Dave';
    }

  }
}
var testArray = ['Dave'];

console.log(lookingForDave(testArray));

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

Вот еще одно решение:

function lookingForDave(array) {
    return array.some(el => el === "Dave") ?
    "It's Dave" :
    "Not Dave!";
}



var testArray = ["Dave", "Bob", "Sam"];

console.log(lookingForDave(testArray));

Вот как это работает: some() принимает функцию, которая запускается для каждого элемента в вашем массиве.Функция, которую вы передаете в качестве аргумента, должна возвращать значение truey или falsy .Если любой из этих операторов возврата верен, some() возвращает истину.Используя троичный оператор, мы проверяем, верно ли это, мы возвращаем «Это Дейв», а в противном случае «Не Дейв!».

Надеюсь, это поможет!

0 голосов
/ 25 декабря 2018

Вы можете использовать find вместо цикла for.Похоже, что вы хотите вернуться после того, как вы впервые нашли совпадение.Array.find вернет значение первого соответствующего критерия.

В приведенном ниже случае, если элемент в массиве равен Дейву.Если совпадений нет, мы будем перебирать каждый элемент массива и возвращать неопределенное.

Затем мы можем использовать условный (троичный) оператор, чтобы проверить, был ли найден элемент.

function lookingForDave (arr){
   const found = arr.find(el => el === 'Dave');
   return found ? 'found him' : 'Not Dave'; 
} 
let testArray = ['Dave'];
lookingForDave(testArray);

условный (троичный) оператор

Поиск массива

0 голосов
/ 25 декабря 2018

Вам необходимо проверить элемент массива по значению, а затем вернуть, если он найден, в противном случае вернуть 'Not Dave' в конце функции.

Если вы вернетесь при первой проверке значения ивозврат не найден, вы пропускаете все остальные элементы для проверки.

function lookingForDave(array) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] === 'Dave') {
            return 'I found him';
        }
    }
    return 'Not Dave';
}

var testArray = ['Dave'];

console.log(lookingForDave(testArray));

Другим решением может быть использование Array#includes и возвращение искомой строки.

function lookingForDave(array) {
    return array.includes('Dave')
        ? 'I found him'
        : 'Not Dave';
}

var testArray = ['Dave'];

console.log(lookingForDave(testArray));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...