allishappy
@allishappy

Как объяснить странное поведение консоли?

3e3df3f3ffaa41b598963d55cb1387a2.png
function arrayCards() {
  var length=arguments.length,
      array=[];
  for (var i=0; i<length; i++) {
    if (Object.keys(arguments[i]).length >= 3 && arguments[i].from!=arguments[i].to) {
      array.push(arguments[i]);
    } 
  }

return array;
}

var one = new Card('Москва', 'Тула', 'автобус'),
        two = new Card('Тула', 'Саратов', 'автобус', '410', '13'),
        three = new Card('Саратов', 'Омск', 'поезд', '12', '12', '12'),
        four = new Card('Омск', 'Питер', 'самолёт', '12', '12');

var array=arrayCards(three, four, two, one); //преобразовали в массив
console.log(array);


И почему-то консоль показывает, что в массиве 4 элемента. Но length=2, и показываются только первые два. В чём ошибка?
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 4
alsopub
@alsopub
Задачка... Сделайте console.log всех three, four, two и one.
Ответ написан
Stalker_RED
@Stalker_RED
Этот код вообще не запустится, т.к. Uncaught ReferenceError: three is not defined(…)

А если взять значения в кавычки,
var array=arrayCards('three', 'four', 'two', 'one')
то вернет пустой массив, т.к. arguments[i].from всегда undefinned как и arguments[i].to
Ответ написан
sakrab
@sakrab
Не будь побежден злом, но побеждай зло добром...
а тут var lenght не чего страшного что зарезервированное слово?
Ответ написан
keslo
@keslo
А где конструктор Card?
Выложите полный код где-нибудь в песочнице. Например, jsfiddle.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы