1 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個贊
應(yīng)該符合你的要求: 支持任意多個數(shù)組進(jìn)行合并
// 數(shù)組合并
function mergeArray(){
if (arguments.length === 0) {
throw new Error('至少一個參數(shù)!');
}
if (arguments.length === 1) {
return arguments[0];
}
/*
* 這邊采取的累積合并
* 第一次循環(huán) args1 , args2 ===> mergeArr
* 第二次循環(huán) mergeArr , args3 === > mergeArr
* 第三次循環(huán) mergeArr , args4 ==> mergeArr
....
* 最終返回 排序后的 mergeArr
*/
var superposition = false;
for (var i = 0; i < arguments.length; ++i)
{
if (i + 1 < arguments.length) {
if (!superposition) {
superposition = arguments[i];
filterArr(superposition);
}
var two = arguments[i + 1];
filterArr(two);
var copyTwo = copyArr(two);
var waitMerge = [];
for (var n = 0; n < superposition.length; ++n)
{
var val1 = superposition[n];
var isExists = false;
for (var a = 0; a < two.length; ++a)
{
var val2 = two[a];
if (val1 === val2) {
isExists = true;
break;
} else {
isExists = false;
}
}
if (!isExists) {
waitMerge.push(val1);
}
}
for (var m = 0; m < waitMerge.length; ++m)
{
copyTwo.push(waitMerge[m]);
}
superposition = copyTwo;
}
}
superposition.sort(function(a , b){
return a - b;
});
return superposition;
}
// 數(shù)組復(fù)制(創(chuàng)建副本)
function copyArr(arr){
var newArr = [];
for (var i = 0; i < arr.length; ++i)
{
newArr[i] = arr[i];
}
return newArr;
}
// 數(shù)組過濾(影響原數(shù)組)
function filterArr(arr){
for (var i = 0 ; i < arr.length; ++i)
{
var idx = false;
for (var n = i + 1; n < arr.length; ++n)
{
if (arr[n] === arr[i]) {
idx = n;
break;
}
}
if (typeof idx === 'number') {
arr.splice(idx , 1);
i--;
}
}
}
console.log(mergeArray([0 , 1 ,2 , 3 , 4] , [4 , 5 , 8 , 0 , 1] , [10 , 100 , 6]));
添加回答
舉報