0

重複が許可されていない2つの配列コレクションをマージしたいのですが、

var ac1:ArrayCollection = new ArrayCollection([ {s:"4",e:"8"}, {s:"9",e:"10"}, ]);
var ac2:ArrayCollection = new ArrayCollection([ {s:"2",e:"3"}, {s:"4",e:"8"}, {s:"9",e:"10"}, {s:"11",e:"12"}, ]);

どうすれば効率的にそれを行うことができますか

ありがとう、

4

3 に答える 3

1

エラー、私はActionScriptの人ではありませんが、これは古典的な問題です。2つの配列を昇順で並べ替えてから、3番目の配列にフィードし、常に2つのソース配列から最小値を選択し、宛先への書き込みをエスケープします。あなたが書くことはすでにリストの最後にあります-あなたはn個の入力配列の一意の値のソートされたリストになります

于 2012-06-02T13:05:35.787 に答える
1

その他のプロパティについては、次のようなものを使用してください。

function equals(o1:Object, o2:Object):Boolean
{
    if (o1 == o2) return true;
    if (!o1 || !o2) return false;

    for (var key:String in o1)
    {
        if (!(key in o2)) return false;
        if (o1[key] != o2[key]) return false;
    }

    return true;
}
于 2012-06-02T13:38:32.487 に答える
0

おそらく、これは良いスターターです。

function equals(o1:Object, o2:Object)
{
    return (o1 && o2) && (o1 != o2) && (o1.s != o2.s) && (o1.e != o2.e);
}

function merge(a:Array, b:Array):Array
{
    const source = [];
    var isContained:Boolean = false;
    for (var i:int; i< a.length;i++) {
        isContained = false
        for (var j:int; j< b.length;j++) {
            if (equals(a[i], b[j])) {
                isContained = true;
                break;
            }
        }
        if (!isContained) {
            source.push(a[1]);
        }
    }
    return source.concat(b);
}
于 2012-06-02T13:10:34.790 に答える