AlexLearne Ответов: 4

Как проверить длину каждого индекса в массиве js


Это может показаться очень простой задачей, но я не могу проверить каждое значение массива на 1. либо я очень устал и не вижу очевидной ошибки, либо я ничего не знал о циклах.
У меня есть этот код:
function longest (hour, val) {
 var result;
  for(var i = 0; i < hour.length; i++){
    if(hour[i].length === 1){result = "they are all 1 length"}
    else {result = "one or more of them is not 1"}
  }
  return result
}
longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k'], 1)



Итак, все очень просто: если каждый индекс имеет длину 1, выведите одно сообщение, если хотя бы одно из них нет, выведите другое.

Что я уже пробовал:

Я думал, что приведенный выше код будет работать, однако, когда я изменяю длину какого-то жала, он все равно печатает "они все 1 длина". Почему? Что я упускаю?
Я новичок, мне важно понять, почему.

4 Ответов

Рейтинг:
29

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.


AlexLearne

Да, я думаю, что это было бы очень хорошо, вы тоже используете visual studio?
Я все время слышу, как люди говорят об отладке, но я не вижу много учебников по ним. Кроме того, как насчет отладчика в консоли, он оказался полезным?

Рейтинг:
2

23741

функция самая длинная (час, вал) {
час = час || [];
var len = час.длина;
for (var i = 0; i < len; i++){
если (час[i]. длина != 1)
return "все они имеют длину 1";
}
return "один или несколько из них не являются 1";
}
длинная(['а', 'б', 'с', 'д', 'е', 'е', 'г', 'ч', 'я', 'к'], 1)


Рейтинг:
11

23741

лучше... нажмите Отправить на этом последнем, прежде чем читать то, что я написал...

функция самая длинная (час, вал) {
час = час || [];
var len = час.длина;
for (var i = 0; i < len; i++){
если (час[i]. длина != 1)
return "один или несколько из них не являются 1";
}
вернуть len > 0 ? "все они имеют длину 1": "массив пуст";
}
длинная(['а', 'б', 'с', 'д', 'е', 'е', 'г', 'ч', 'я', 'к'], 1)


Patrice T

Не перепечатывайте решение
Воспользуйся Улучшить решение вместо.

Рейтинг:
1

Karthik_Mahalingam

попробовать это

 function longest(array, length) { // make use of length parameter, to check dynamic
           var result;
           var count = 0;
           for (var i = 0; i < array.length; i++)
               if (array[i].length === length)
                   count++; // increment the count if each item's length and length val is equal
           result = count == array.length ? 'they are all ' + length + ' length' : 'one or more of them is not ' + length;
// if count and input array length is equal then all the items matched the condition, else not

           return result;
       }

       longest(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k'], 1)