2012-10-18 4 views
2

일치 :찾을 수 없습니다 나는 숫자의 쌍 중첩 된 배열이

_open = [[8,15], [9,16]]; 

내가 ArrayUtilities.findMatchIndex를 사용하여 일치하는 항목을 찾지하려는하지만 항상 -1을 반환 요소 배열을 찾을 때 . 예를 들면 :

ArrayUtilities.findMatchIndex(_open, [8, 15]) 

AS3가 배열을 비교하기 위해 다른 종류의 비교 (문자열, 숫자, 등) 단지

여기 findMatchIndex()의 잘 작동 있기 때문에, 가능하다면 궁금 해요 :

public static function findMatchIndex(aArray:Array, oElement:Object, ...rest):Number { 
    var nStartingIndex:Number = 0; 
    var bPartialMatch:Boolean = false; 
    if(typeof rest[0] == "number") { 
    nStartingIndex = rest[0]; 
    }  
    else if(typeof rest[1] == "number") { 
    nStartingIndex = rest[1]; 
    } 
    if(typeof rest[0] == "boolean") { 
    bPartialMatch = rest[0]; 
    } 
    var bMatch:Boolean = false; 
    for(var i:Number = nStartingIndex; i < aArray.length; i++) { 
    if(bPartialMatch) { 
     bMatch = (aArray[i].indexOf(oElement) != -1); 
    } 
    else { 
     bMatch = (aArray[i] == oElement); 
    } 
    if(bMatch) { 
     return i; 
    } 
    } 
    return -1; 
} 

답변

1

다른 유형 (문자열, 숫자 등)을 비교하는 것은 소위 프리미티브이고 값으로 비교되기 때문에 잘 작동합니다. 배열은 객체이기 때문에 참조로 비교됩니다. 기본적으로 이는 [8,15]! = [8,15]을 의미합니다.

이 같은 뭔가가이 라인을 대체 주위에 한 가지 방법 ...

else { 
    bMatch = (aArray[i] == oElement); 
} 

... compareElements이 인수를 확인하려고합니다

else { 
    bMatch = compareElements(aArray[i], oElement); 
} 

... '형식을 먼저 사용하고 개체 인 경우 해당 값을 비교합니다.

관련 문제