Почему это для l oop in Javascript дает мне число вместо списка чисел от 0 до 4? - PullRequest
3 голосов
/ 20 июня 2020

Я знаю, что нормальное поведение a для l oop похоже на это:

for(let i = 0; i<5; i++){
    console.log(i);
}

, что дает мне следующий результат:
0

1

2

3

4

Однако следующий код дает мне в результате 5, и я не знаю, почему он не дает мне результата, аналогичного в приведенном выше примере. Он не ведет себя как для l oop, потому что не принимает во внимание инициализатор. Большое спасибо за вашу помощь.

 function charCount(str){

    for(var i=2;i<=str.length;i++){
        result = [i]
    }
    return result; 
}
charCount('hello')

Ответы [ 3 ]

3 голосов
/ 20 июня 2020
function charCount(str) {
    result=[];
    for(var i=2;i<=str.length;i++){
        result.push(i);
    }
    return result; 
}
charCount('hello')

При выполнении result = [i] вы просто сбрасываете весь массив, pu sh () добавляет i в существующий массив на каждой итерации.

1 голос
/ 20 июня 2020

Вы также можете перебирать значения count и pu sh в новый массив, используя ключи без .push(), указав ключ в скобках внутри for l oop. Назначая значение ключа массива с помощью скобки перед определением следующего значения, вы гарантируете, что выполняете итерацию до новой пары ключ \ значение внутри массива с каждой итерацией до длины str.

function charCount(str) {
    result=[];
    for(var i = 0; i < str.length; i++){
        result[i] = i;
    }
    return result; 
}
console.log(charCount('hello'))

Также рассмотрите следующий код с использованием forEach l oop, где вы можете определить свои пары ключ / значение для анализа в l oop ...

function charCount(str) {
    result=[];
    str = str.split(''); // split the string 
    str.forEach(function(value, index){
      result[index] = value;
      // or result[index] = index --> to push in the numbered values of the keys as values to the array --> [0,1,2,3,4];
    })
    return result; 
}
console.log(charCount('hello'))
1 голос
/ 20 июня 2020

Этот код возвращает «5», потому что

В вашем коде вы возвращаете последнее значение результата

например, вы передаете строку «hello», а затем для l oop итерация от 2 до 5 ( str.length), поэтому в последней переменной результата есть значение 5, поэтому, когда вы возвращаете результат valriable, он возвращает 5.

для возврата всех чисел от 0 до 5, а затем измените свой код

result. pu sh (i)

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

...