Задать вопрос
@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]);
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
profesor08
@profesor08 Куратор тега JavaScript
Потому что elems[1] === undefined и у него нету атрибута length, а значит код цикла не исполняется, и тебе выводится 1. Посмотри как ты инициализируешь elems, ты задаешь только нулевой элемент.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы