タイトルとして、入力が[[1,2]、[3,4]、[1,3]、[5,6]、[6,5]]の場合、出力は[[1,2,3,4]、[5,6]]でなければなりません。 再帰的な部分で間違っています。私のコードでは、それを実行した後、[[1,2,3]、[1,3,4]、[5,6]]を取得します。これは、もう一度マージする必要があることを意味しますが、サブ配列に共通要素が含まれなくなるまでコードを続行します。共通要素を含むサブアレイを削除する
は、ここでは、2つのハッシュテーブル、結果sets
のための項目の1とそのgroups
とオンを使用することができます私のコード
function need_merge_or_not(arr)
{
for (var i = 0; i <= arr.length-1; i++) {
for (var j = i+1; j <= arr.length-1; j++) {
var arr_new = arr[i].concat(arr[j]);
//remove deplicates
var arr_merge = arr_new.filter(function (item, pos) {return arr_new.indexOf(item) == pos});
if (arr_merge.length < arr_new.length) {
return true;
}
}
}
return false;
}
function merge(arr)
{
if (arr.length >= 2) {
for (var i = 0; i <= arr.length-1; i++) {
for (var j = i+1; j <= arr.length-1; j++) {
var arr_new = arr[i].concat(arr[j]);
var arr_merge = arr_new.filter(function (item, pos) {return arr_new.indexOf(item) == pos});
if (arr_merge.length < arr_new.length) {
arr.splice(arr.indexOf(arr[i]), 1);
arr.splice(arr.indexOf(arr[j]),1);
arr.push(arr_merge);
}
}
if (need_merge_or_not(arr)) {
return merge(arr);
}
}
}
return arr;
}
申し訳ありませんが、出力は[[1,2,3,4]、[5,6]]である必要があります。 –
なぜ結果をグループ化するのですか? –
[JavascriptとDuplicateアイテムで2つの配列をマージする方法](http://stackoverflow.com/questions/1584370/how-to-merge-two-arrays-in-javascript-and-de-duplicate) -items) – gforce301