Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.11.2013, 14:31
Новичок на форуме
Отправить личное сообщение для eudji Посмотреть профиль Найти все сообщения от eudji
 
Регистрация: 13.11.2013
Сообщений: 2

Не могу понять логику
Тест для начинающих с 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.

Последний раз редактировалось eudji, 13.11.2013 в 14:33.
Ответить с цитированием
  #2 (permalink)  
Старый 13.11.2013, 14:42
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Что-то всё уж слишком заумно сделано

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');

Последний раз редактировалось ruslan_mart, 13.11.2013 в 15:00.
Ответить с цитированием
  #3 (permalink)  
Старый 13.11.2013, 14:55
Аватар для animatio
Интересующийся
Отправить личное сообщение для animatio Посмотреть профиль Найти все сообщения от animatio
 
Регистрация: 21.02.2013
Сообщений: 15

Я так понимаю, что задание таково.
Есть массив 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 в переменную и тем самым немного оптимизировали работу цикла
Ответить с цитированием
  #4 (permalink)  
Старый 13.11.2013, 14:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Сообщение от eudji Посмотреть сообщение
дан изначальный код:

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 или нет.
Дописываю!

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');
}
Ответить с цитированием
  #5 (permalink)  
Старый 13.11.2013, 14:58
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

animatio, правильно начал...
Но его обманули аглицкие словечки в конце... Что повлияло на не правльный (по заданию) возврат значений из функции.

ЕПРСТ, это просто тест на понимание некой части галиматьи. И не более того...
Ответить с цитированием
  #6 (permalink)  
Старый 13.11.2013, 15:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Сообщение от eudji
вызывает смешанные чувства куски "function (n)" и пустой return. Откуда взялась n, чему равна?
Это как кроссворд или сканворд (х/з как там их).
Нужно правильно заполнить "пустые клеточки"...
Ответить с цитированием
  #7 (permalink)  
Старый 13.11.2013, 15:06
Новичок на форуме
Отправить личное сообщение для eudji Посмотреть профиль Найти все сообщения от eudji
 
Регистрация: 13.11.2013
Сообщений: 2

О, благодарствую.
Просто не хочется дальше продолжать обучение, не поняв данный кусочек.
Ответить с цитированием
  #8 (permalink)  
Старый 13.11.2013, 15:09
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Сообщение от eudji
Просто не хочется дальше продолжать обучение, не поняв данный кусочек.
Да это просто тест.
Я бы сказал, что весьма интересный и занимательный.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемма с jquery fancybox, не могу понять в чем дело! bandesign jQuery 1 16.09.2013 16:35
Не могу понять Замыкание. slip AJAX и COMET 7 19.01.2013 14:40
Не могу понять, почему не работает автокомпил в IE 8 gargon2008 jQuery 0 07.06.2011 11:31
RegExp - поиск в найденном. Не могу понять senseysensor Общие вопросы Javascript 9 17.10.2010 21:55
не могу понять в чём ошибка scuter Общие вопросы Javascript 2 28.08.2008 15:22