1 const addSort = function (arr1, arr2) {
2 // 创建一个新的数组,存放结果
3 var newArr = []
4 // 设置arr1的当前索引
5 var i = 0
6 // 设置arr2的当前索引
7 var j = 0
8 // 获取arr1数组的长度
9 var arr1_length = arr1.length
10 // 获取arr2数组的长度
11 var arr2_length = arr2.length
12 // 用while,不用for,因为while可以使用条件判断退出循环,而for是遍历数组,不够灵活
13 // 当两数组当前的索引都不大于自身数组长度时,继续循环,否则退出循环
14 while(i < arr1_length && j < arr2_length){
15 // 判断哪个值比较小,小的push到新数组当中
16 if(arr1[i] > arr2[j] ){
17 newArr.push(arr2[j])
18 // push完成后,需要对索引值+1
19 j++
20 } else {
21 newArr.push(arr1[i])
22 i++
23 }
24 }
25 // 跳出循环,此时,其中一个数组已经全部加入到新数组当中,而另一个数组还剩尾巴没有加入
26 // 同时,另一个数组的尾巴全部都大于别人,并且也都是有序的
27 // 判断是arr1全部加入了还是arr2全部加入了
28 if(i >= arr1_length){
29 // 如果是arr1全部加入了,则把arr2的尾巴加入到新数组当中,尾巴从索引j开始,直到arr2.length-1
30 for(let key = j; key < arr2_length; key++){
31 newArr.push(arr2[key])
32 }
33 } else {
34 // 如果是arr2全部加入了,则把arr1的尾巴加入到新数组当中,尾巴从索引i开始,直到arr1.length-1
35 for(let key = i; key < arr1_length; key++){
36 newArr.push(arr1[key])
37 }
38 }
39 // console.log(newArr)
40 // 把新数组返回出去
41 return newArr
42 }