Не могу понять логику
Тест для начинающих с Codecademy
дан изначальный код:
var lost = [4, 8, 15, 16, 23, 42];
var count = lost.length;
var isLost = function (n) {
for ( ) {
if ( n === lost[i]) {
return ;
}
}
return ;
};
if ( isLost(12) ) {
console.log('12 is a lost number');
}
if ( isLost(16) ) {
console.log('16 is a lost number');
}
Задание такое: дописать функцию isLost так, чтобы при проверке числа n цикл возвращал значения true или false. таким образом будет производится проверка является число isLost или нет. Вопросы: 1) зачем в коде эта строка var count = lost.length; ? переменная count далее нигде не используется. Так зачем? Запутать новичка? 2) я дописал условие FOR и получилось следующее
var lost = [4, 8, 15, 16, 23, 42];
var count = lost.length;
var isLost = function (n)
{
for (i = 0; i < n; i++)
{
if ( n === lost[i])
{
return;
}
}
return ;
};
if ( isLost(12) ) {
console.log('12 is a lost number');
}
if ( isLost(16) ) {
console.log('16 is a lost number');
}
вызывает смешанные чувства куски "function (n)" и пустой return. Откуда взялась n, чему равна? При исправлении на return n; программа выполняется и тест считается пройденным. Кто уже не такой кран в java как я, и кому не лень, объясните плз пункты 1 и 2. |
Что-то всё уж слишком заумно сделано :)
var lost = [4, 8, 15, 16, 23, 42];
function isLost(n) {
return !!(lost.indexOf(n) + 1);
}
if(isLost(12)) alert('12 is a lost number');
if(isLost(16)) alert('16 is a lost number');
|
Я так понимаю, что задание таково.
Есть массив lost. Функция isLost должна перебирать lost с помощью цикла и проверять есть ли в нем n. Тогда функция lost имеет следующий вид:
var isLost = function (n) {
for (var i = 0; i < count; i++) {
if ( n === lost[i]) {
return true;
}
}
return false;
};
count обьявлена как отдельная переменная, т.к. если написать for (var i = 0; i < lost.length; i++) то в каждой итерации будет обращение к свойству length обьекта lost, а это - дополнительное время. А так мы занесли значение lost.length в переменную и тем самым немного оптимизировали работу цикла |
Цитата:
var lost = [4, 8, 15, 16, 23, 42];
var count = lost.length;
var isLost = function (n) {
for (var i=0; i<count; i++ ) {
if ( n === lost[i]) {
return false;
}
}
return true;
};
if ( isLost(12) ) {
alert('12 is a lost number');
//console.log('12 is a lost number');
}
if ( isLost(16) ) {
alert('16 is a lost number');
//console.log('16 is a lost number');
}
|
animatio, правильно начал... :yes:
Но его обманули аглицкие словечки в конце... :( Что повлияло на не правльный (по заданию) возврат значений из функции. ЕПРСТ, это просто тест на понимание некой части галиматьи. :D И не более того... |
Цитата:
Нужно правильно заполнить "пустые клеточки"... |
О, благодарствую.
Просто не хочется дальше продолжать обучение, не поняв данный кусочек. |
Цитата:
Я бы сказал, что весьма интересный и занимательный. |
| Часовой пояс GMT +3, время: 03:02. |