引数として渡された配列間の対称差を計算する関数を作成しました。私は2つの配列のためにそれをし、それは働いた。今の問題は、関数をn個の変数に拡張したいということです。関数のarguments.lengthが2に等しい場合、symmの相違を計算する必要があると思います。そうでなければ、他の要素と最初の2つの間のsymm diffを計算する再帰関数を呼び出す必要があります。私は知らない、私は非常に混乱しています。対称差分の再帰関数
function sym(args) {
var arr=[].slice.call(arguments);
var cnts={};
var result=[];
if(arguments.length==2){
arr=arguments[0].concat(arguments[1]);
console.log(arr);
for(var number in arr){
if(cnts.hasOwnProperty(arr[number])){
++cnts[arr[number]].cnt;
}
else cnts[arr[number]]={cnt:1,val:arr[number]};
}
for(var counts in cnts){
if(cnts[counts].cnt===1) result.push(cnts[counts].val);
}
}
else{
var first=arguments[0];
var nextDiff=function(next){
return ...........?????????;
};
}
return result;
}
sym([1, 2, 5], [2, 3, 5], [3, 4, 5]);
[Javascriptを使用して、対称差を解決しよう]の可能な重複(http://stackoverflow.com/questions/30834946/trying-to-solve-symmetric-difference-using-javascript ) –