@danyvasnafig

Почему переменная не увеличивается?

При вызовах функции calcLoveTriangle(elems[1]) , в консоль выводит переменную lovet равную 1
calcLoveTriangle(elems[1]) , если вызвать calcLoveTriangle(elems[0]) то тоже выводит 1, значит в коде функции lovet++ увеличивается, но почему если мы вызываем эти функции 2 раза, lovet не увеличивается второй раз? Эта переменная же вынесена отдельно, и при увеличении где-либо в коде должна меняться, каждый раз увеличиваясь.
Т.е. по идее, если она меняется с 0 на 1 при вызове calcLoveTriangle(elems[0]), то при вызове calcLoveTriangle(elems[1]) должна меняться уже с 1 на 2, почему так не работает, и каждый раз выводит 1?

function getLoveTrianglesCount(preferences = []) { 
    let lovet = 0;
    let elems = {};
    elems[0] = preferences;
    let count = 0;
    let counter = 1;
    let k = 0;
    function compareNumeric(a, b) {
      if (a > b) return 1;
      if (a < b) return -1;
    }
    preferences.sort(compareNumeric);
  
    function del(preferences){       
        for(let i = 0; i < preferences.length; i++){            
                if(preferences[i] == preferences[i-1]){
                    if( elems[counter]){                         
                        elems[counter].push(preferences[i]);
                        elems[0].splice(elems[0][i], 1);   
                    } else {
                        elems[counter] = [];                      
                        elems[counter].push(preferences[i]);
                        elems[0].splice(elems[0][i], 1); 
                    }
                }
        }          
        if(elems[counter]){
            counter++
          return  del(elems[counter-1]);;
        }      
    }  
    del(preferences);

    for(val in elems){
        document.write('<br>' + elems[val]); 
    } 
  
    function calcLoveTriangle(arr){
        for(let i = 0; i < arr.length; i++){
            if(count != 0){
              k = i-1;      
            }
          if(arr[i] == arr[k]+1){
              count++;   
          }
        
          if(count == 2){
              lovet++
              count = 0;
              k = i+1;           
          }  
        }             
        console.log(lovet); 
    }

    calcLoveTriangle(elems[0]) 
    calcLoveTriangle(elems[1])    
    console.log(lovet); 

};

getLoveTrianglesCount([1,1,2,2,3,3]);
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
profesor08
@profesor08 Куратор тега JavaScript
Потому что elems[1] === undefined и у него нету атрибута length, а значит код цикла не исполняется, и тебе выводится 1. Посмотри как ты инициализируешь elems, ты задаешь только нулевой элемент.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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