2009-07-01 3 views
0

기본적으로 스파 스 (sparse) 인 배열로 AS3에서 작업하고 있습니다. 나는 배열을 만들고 주어진 위치에 값을 추가한다. 그 색인에있는 내용이 무효화됩니다. 해당 인덱스 값은 유지되지만 내용은 무효화됩니다. 문제는 길이가 여전히 동일하다는 것입니다. 실제로 다른 인덱스를 수정하지 않고 인덱스를 제거 할 수있는 방법이 있습니까?AS3 - 희소 배열을 희소하게 유지하기

ex: 
array:Array = new Array(); 
array[ 7 ] = new Array(); 
array[ 16 ] = new Array(); 
array[ 16 ] = null; 

편집 : 나는 길이로 추적 할 배열 위의 예에서되도록 배열, 가능한 작게 유지하는 배열을 원하는 7.

+0

2 질문 : 1. 데이터 구조가 항상 부족한 것인가? 2. 불변, 이동, 접합 및 조각 같은 방법이 필요합니까? – back2dos

+0

1. 예. 데이터는 항상 희박합니다. 2. 스플 라이스/슬라이스 - 데이터 구조에서 데이터를 제거하는 다른 방법이있는 경우 필요하지 않습니다. – grey

답변

1

delete operator ... 여전히 길이는 8 ... 키 값을 7에서로 설정합니다.여전히 에는 null을 포함하여 인 모든 값을 포함 할 수 있으므로 7 키의 값이 있음을 의미합니다. 만약 당신이 정말로 스파 스 배열을 사용한다면, flash.utils::Dictionary을 사용하는 것을 고려해보십시오. 중요한 순서가 중요하다면, flash.utils::Proxy을 살펴 보거나 배열 접근을 사용하지 않는 데이터 구조를 만드십시오. 그러나 대신 getValsetVal 메쏘드가 있습니다.

greetz

back2dos

+1

정말입니까? 다음 :'arr : Array = []; arr [200] = "test"; arr [500] = "test2"; 삭제 arr [500]; trace (arr.length);'길이를 501으로 추적합니다. –

+0

네 말이 맞아. 누가 아는가, 어쩌면 그 행동은 실제로 반세기 전의이 대답을 주었을 때 주장했던대로였다 : D 여전히 나머지는 적용된다) – back2dos

+0

하. 글쎄, 나는 마침내 왜이 모든 년 후에 사전을 사용하는 이유를 발견했습니다! –

0

array.splice(7,1) 

splice() 시도

+0

이것은 7 후에 모든 요소의 색인을 변경합니다. – fenomas

관련 문제