Проблема в том, что вы используете for...in
l oop вместо for...of
l oop. A for...of
l oop будет перебирать элементы массива и давать правильный ответ независимо от ввода. Однако for...in
l oop перебирает индексы массива. Следовательно, это даст неправильный ответ в большинстве случаев. Тем не менее, для этого конкретного ввода он дает правильный ответ.
| sum | num |
| ------ | --- |
| 0 | "0" |
| "00" | "1" |
| "001" | "2" |
| "0012" | |
Индексы массива: "0"
, "1"
и "2"
. Индексы - это строки, а не числа. Следовательно, когда вы добавляете индекс "0"
к начальному значению sum
, то есть 0
, тогда JavaScript преобразует sum
в строку, объединяет две строки и сохраняет объединенную строку обратно в sum
. В конце l oop значение sum
равно "0012"
вместо ожидаемого значения 12
.
Однако оба значения "0012" / 3
и 12 / 3
дают правильный ответ, т.е. 4
. В первом случае JavaScript сначала преобразует строку "0012"
в число 12
. Следовательно, мы случайно получаем правильный ответ для этого конкретного ввода.