2014-09-19 2 views
-3

Мы попросили сделать следующее:функции _.each для зацикливания в JS вопросе

Напишите функцию с именем checkValue, который ищет массив для значения. Он принимает массив и значение и возвращает true, если значение существует в массиве, иначе оно возвращает false.

var helloArr = ['bonjour', 'hello', 'hola']; 

var checkValue = function(arr, val) { 
//checks if the val is in arr 
} 

Перепишите checkValue используя _.each.

вот что я должен itterate над helloArr использованием _.each:

var helloArr = ['bonjour', 'hello', 'hola']; 

var checkValue = function (num) { 
return num; 
} 
checkValue('hola'); 

var output = us.each(helloArr, function(num){ 
if (checkValue()) 
    {return true;}}); 

return output; 

Что я делаю неправильно? Когда я запускаю его с узлом, нет ошибок, но нет вывода. Я знаю, что вы можете использовать _.find для этого, но спецификация запрашивает повторение по массиву и находит значение с помощью _.each.

+0

is indexOf ('hola')> 0 не достаточно хороший? – dbarnes

+0

Что такое checkValue? –

+0

checkValue должен проверять, должен ли проверять, есть ли определенное значение в массиве. Без _.each его довольно легко: var helloArr = ['bonjour', 'hello', 'hola']; var checkValue = function (arr, val) { for (var i = 0; i

ответ

0

В вашем втором примере, вы вызываете checkValue без параметра, поэтому он собирается вернуться undefined, который является значением falsey, а обратный вызов each никогда не возвращает ничего.

В таком случае, как правило, ничего не нужно возвращать в любом случае. _.each возвращает список, в котором он работает.

_.each - как для петли; рассмотрите его более похожее на одно.

function checkValue_original1(arr, val) { 
    for (var i = 0; i < arr.length; i++) { 
     if (val == arr[i]) return true; 
    } 
    return false; 
} 

function checkValue_original2(arr, val) { 
    return arr.indexOf(val) >= 0; 
} 

function checkValue_us_each(arr, val) { 
    var found = false; 
    _.each(arr, function(element, index, list) { 
     if (element == val) found = true; 
    }); 
    return found; 
} 
Смежные вопросы