比较2个向量或数组的xml内容的Sane方法

时间:2012-03-05 22:28:52

标签: flash actionscript

代码:

    var v0:Vector.<XML> = Vector.<XML>([new XML(<a/>)]);
    var v1:Vector.<XML> = Vector.<XML>([new XML(<a/>)]);
    trace(v0 == v1); //false
    trace(ObjectUtil.compare(v0, v1) == 0); //stupid always true

    //insane, but seems to work
    var same:Boolean = true;
    var found:Boolean;
    for each (var item0:XML in v0){
        found = false;
        for each (var item1:XML in v1){
            if (item0 == item1){
                found = true;
                break;
            }
        }
        if (found != true){
            same = false;
            break;
        }
    }
    trace(same);

如果用数组替换向量,则会得到相同的跟踪。有什么奇怪的,如果数组中的元素不同,ObjectUtil仍会返回true。

疯狂方法只有1/2疯狂,因为它确定v0的所有元素是否都包含在v1中。 2/2部分,需要检查v1的所有元素是否都在v0 ...

使用xml的数组和向量的ObjectUtil pecularity:

    var arr0:Array = ['a'], arr1:Array = ['a'];
    trace(ObjectUtil.compare(arr0, arr1) == 0); // true
    arr1 = ['b'];
    trace(ObjectUtil.compare(arr0, arr1) == 0); //false
    arr0 = [new XML(<a/>)];
    arr1 = [new XML(<a/>)];
    trace(ObjectUtil.compare(arr0, arr1) == 0); // true
    arr1 = [new XML(<b/>)];
    trace(ObjectUtil.compare(arr0, arr1) == 0); //!!! true

在最后一种情况下检查什么? 2个不同的对象,不同的值最终为真......?

0 个答案:

没有答案