2015-07-11 1 views
0

Я писал алгоритм сортировки слияния, и в функции слияния хелперов, я имел следующее сравнительное заявление:Javascript слияния/сортировать фатальную ошибку

function merge(a,b){ 
     var result = []; 
      while(a.length && b.length){ 
        result.push(a[0] < b[0] ? a.shift() : b.shift()); // you can't just grab a[0] or b[0] 
     //as it results in a fatal error. 
       } 
return, etc. 
} 

Почему, когда вместо «a.shift () ', Я набрал [0], это привело к фатальной ошибке? Это потому, что вы что-то делаете с чем-то, что тоже в условной статье?

+0

Угадать, что 'a [0]' не удаляет запись из 'a', поэтому вы оказываетесь в бесконечном цикле, который делает результат' result' несколько большим, чем желательно. – user3386109

ответ

1

Оформить документацию для shift. Он удаляет первый элемент. Поэтому, если вы только получаете доступ к [0] и не удаляете его, цикл while никогда не выйдет.