实现一个mergeArray函数

对两个已经排好序的数组进行排序,从小到大。数组里面是数字且均为整数,在[0,100000]之间,数组长度不超过10000。

输入数据有三行,第一行两个数字表示每个数组数字个数,后面两行分别表示两个数组
5,3
9,6,5,3,1
7,4,2

输出
1,2,3,4,5,6,7,9


红颜莎娜
浏览 567回答 1
1回答

函数式编程

应该符合你的要求: 支持任意多个数组进行合并// 数组合并function mergeArray(){&nbsp; &nbsp; if (arguments.length === 0) {&nbsp; &nbsp; &nbsp; throw new Error('至少一个参数!');&nbsp; &nbsp; }&nbsp; &nbsp; if (arguments.length === 1) {&nbsp; &nbsp; &nbsp; return arguments[0];&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; /*&nbsp; &nbsp; &nbsp; * 这边采取的累积合并&nbsp; &nbsp; &nbsp; * 第一次循环 args1 , args2 ===> mergeArr&nbsp; &nbsp; &nbsp; * 第二次循环 mergeArr , args3 === > mergeArr&nbsp; &nbsp; &nbsp; * 第三次循环 mergeArr , args4 ==> mergeArr&nbsp;&nbsp; &nbsp; &nbsp; ....&nbsp; &nbsp; &nbsp; * 最终返回 排序后的 mergeArr&nbsp; &nbsp; */&nbsp; &nbsp; var superposition = false;&nbsp; &nbsp; for (var i = 0; i < arguments.length; ++i)&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (i + 1 < arguments.length) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!superposition) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;superposition = arguments[i];&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;filterArr(superposition);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var two = arguments[i + 1];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;filterArr(two);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var copyTwo = copyArr(two);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var waitMerge = [];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (var n = 0; n < superposition.length; ++n)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var val1 = superposition[n];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var isExists = false;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var a = 0; a < two.length; ++a)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var val2 = two[a];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (val1 === val2) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isExists = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isExists = false;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!isExists) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;waitMerge.push(val1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (var m = 0; m < waitMerge.length; ++m)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; copyTwo.push(waitMerge[m]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;superposition = copyTwo;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; superposition.sort(function(a , b){&nbsp; &nbsp; return a - b;&nbsp; });&nbsp;&nbsp;&nbsp; return superposition;}// 数组复制(创建副本)function copyArr(arr){&nbsp; var newArr = [];&nbsp; for (var i = 0; i < arr.length; ++i)&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp;newArr[i] = arr[i];&nbsp; &nbsp;}&nbsp; return newArr;}// 数组过滤(影响原数组)function filterArr(arr){&nbsp; &nbsp;for (var i = 0 ; i < arr.length; ++i)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;var idx = false;&nbsp; &nbsp; &nbsp; &nbsp;for (var n = i + 1; n < arr.length; ++n)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (arr[n] === arr[i]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;idx = n;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp;if (typeof idx === 'number') {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; arr.splice(idx , 1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i--;&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; }}console.log(mergeArray([0 , 1 ,2 , 3 , 4] , [4 , 5 , 8 , 0 , 1] , [10 , 100 , 6]));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript