2013-08-07 4 views
1

그래서 나는 다람쥐에서 잠시 머물고있는 문제가 있습니다. 나는 예를 들어 배열 안에 모든 것을 통과 뭔가 만들려면 :빈 슬롯을 배열로 찾아서 사용하기

local array = [1, 2, 3, -1, 5, -1, 7, -1]; 

을하고 (나는 그들 중 하나, 먼저 오는 하나를 사용하려면, -1 된 것을 찾아하는 이 경우는 3과 5 사이입니다.) 누군가가 특정 오브젝트를 파괴 할 때 내 스크립트에서

, 그것은 그렇지 않으면 그냥 오류를 통해 해당 개체를 사용하려고 할 때 때문에, -1 대신에 일정한 수의 ID를 객체가 설정합니다. 내가이 일을 잘 설명하는지 잘 모르겠다. 플레이어가 특정 게임 서버에 연결할 때

또 다른 예입니다, 그래서 우리는 연결 ID 0, 1, 3, 4 플레이어, 그래서 다음 플레이어가 연결되면 그들은 난 후 일을있는 ID 2를 얻을 수 배열로 나는 몇 가지, 그것은 가장 가까운 유일한 방법을 시도

은 이것이다 :

for(local i=1; i < Array.len(); i++){ 
    if(Array[i].id != -1){ 
     count++; 
    } else { 
     count = i; 
    } 
} 

그러나 이것은 하나의 문제는 마지막 ID를 받아 그것을 대체하는, 그래서 우리는 객체 0을 가지고있다 , 1, 2, 3 3을 파괴하고 새로운 것을 만들면 문제 없습니다. 만약 내가 0, 1, 2 중 하나를 파괴하고 새로운 것을 만들면 그 슬롯을 차지하지 않을 것이고, 그 대신 4 번을 선택하면 작동하지 않습니다.

읽어 주셔서 감사합니다. 희망에 따라 도움을받을 수있는 사람이 있습니다.


해결 :
는이 같은 문제를 가진 다른 사람을 위해 정말 간단이 내가 한 것입니다. 따라 가면 정말 까다로울 수 있습니다.
내가 한 것은 "휴식"을 추가 한 것입니다. 아래의 else 문에서, 코드 :

for(local i=1; i < Array.len(); i++){ 
    if(Array[i].id != -1){ 
     count++; 
    } else { 
     count = i; 
     break; // THIS 
    } 
} 

예, 나는 documentation에서 ... 나중에 머리에

+0

제대로 해결로 질문을 표시하는 데 동의하는 응답으로 솔루션을 넣습니다. – Nakilon

답변

1
array.find(-1) 

을 자신을 히트 않았다

는 대한 선형 검색을 수행합니다 배열의 값 그렇지 않은 경우 null이 발견되면 값의 인덱스 을 리턴합니다.