javascript合并/排序致命错误

时间:2015-07-11 23:21:51

标签: javascript algorithm sorting merge mergesort

我正在编写合并排序算法,在merge helper函数中,我有以下比较语句:

    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.
}

为什么当我输入一个[0]而不是'a.shift()'时,它会导致致命的错误?是因为你正在用条件句中的某些东西做某事吗?

1 个答案:

答案 0 :(得分:1)

查看shift的文档。它删除了第一个元素。因此,如果您只访问[0]并且不删除它,那么while循环永远不会退出。