js 面试 算法题

今天面试,考官给了一道算法题,有数组1和数组2,这两个数组都是已经按照从大到小排好序的,然后求两个数组集合的中间数。给出的思路是:要从已排好顺序的数组1和数组2入手,只需要比较数组1和数组2的第一个元素,然后一直循环下去就可以了。然后我的思路就如下代码,但是最后的temp一直是undefined,打了断点也没看懂,有小伙伴能给解释下吗,谢谢啦

        function test(arr1,arr2){

            var arr=[];

            while(arr1.length>0&&arr2.length>0){

                if(arr1[0]>=arr2[0]){

                    arr.push(arr1[0]);

                    arr1.pop(arr1[0]);

                }else if(arr1[0]<arr2[0]){

                    arr.push(arr2[0]);

                    arr2.pop(arr2[0]);

                }

            }

            var temp;

            if(arr1.length=0){

                temp=arr.concat(arr2);

            }

            if(arr2.length=0){

                temp=arr.concat(arr1);

            }


            return document.write(temp);

        }


三国纷争
浏览 1148回答 3
3回答

皈依舞

pop() 方法用于删除并返回数组的最后一个元素,应该是删除第一个元素吧。。。。 shift() 才对

慕桂英546537

function combine(a1, a2) {&nbsp; &nbsp; var a3 = []&nbsp; &nbsp; var i = 0&nbsp; &nbsp; var j = 0&nbsp; &nbsp; var k = 0&nbsp; &nbsp; while (i < a1.length && j < a2.length) {&nbsp; &nbsp; &nbsp; &nbsp; if (a1[i] > a2[j]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a3[k] = a1[i]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i++&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; k++&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a3[k] = a2[j]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j++&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; k++&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; while (i<a1.length) {&nbsp; &nbsp; &nbsp; &nbsp; a3[k] = a1[i]&nbsp; &nbsp; &nbsp; &nbsp; i++&nbsp; &nbsp; &nbsp; &nbsp; k++&nbsp; &nbsp; }&nbsp; &nbsp; while (j<a2.length) {&nbsp; &nbsp; &nbsp; &nbsp; a3[k] = a2[j]&nbsp; &nbsp; &nbsp; &nbsp; j++&nbsp; &nbsp; &nbsp; &nbsp; k++&nbsp; &nbsp; }&nbsp; &nbsp; return a3}
打开App,查看更多内容
随时随地看视频慕课网APP