AS3:如何仅使用1 for循环比较2个包含对象的数组?

时间:2015-06-16 10:24:53

标签: arrays actionscript-3 flash

我有2个数组,其中包含不同长度的对象

 var arr : Array = [{name : "aa", id : "0"}, {name : "bb", id : "1"}, {name : "cc", id : "2"}];

 var arrTemp : Array = [{name : "ee", id : "0"}, {name : "hh", id : "1"}, {name : "cc", id : "2"}, {name : "gg", id : "3"}];

现在我不想使用2 for循环来遍历数组。是否可以使用任何属性(如indexOf或过滤器)进行搜索。

目前我正在使用下面的代码,我猜错了

for(var i:* in arr)
{       
    if( arr[i].indexOf( arrTemp[i].name ) > -1 )
    {
        trace(i)
    }
}

帮助将不胜感激。

提前感谢。

1 个答案:

答案 0 :(得分:0)

基本上,您必须检查arr[i].name indexOf而不是arr[i]。代码应该像这样工作:

var arr : Array = [{name : "aa", id : "0"}, {name : "bb", id : "1"}, {name : "cc", id : "2"},{name : "ee", id : "0"}];
var arrTemp : Array = [{name : "aa", id : "0"}];

function decideWhichArray():void {
    if(arr.length <= arrTemp.length){
        var dif = arrTemp.length - arr.length;
        for(var i=0;i< dif;i++){
            var newObj:Object = new Object();
            newObj.name = null;
            newObj.id = null;
            arr.push(newObj)
        }
    }
    else{
        var difAgain = arr.length - arrTemp.length;
        for(var j=0;j< difAgain;j++){
            var newObjSecond:Object = new Object();
            newObjSecond.name = null;
            newObjSecond.id = null;
            arrTemp.push(newObjSecond)
        }
    }
    checkResult(arr,arrTemp);
}

function checkResult(arr1,arr2):void {
    for(var i:* in arr1)
    {       
        if( arr1[i].name.indexOf( arr2[i].name ) > -1 )
        {
            trace(arr1[i].name);
        }
    }
}

decideWhichArray()