루아

2011-07-17 2 views
1

에 내림차순으로 테이블을 정렬 내가이 일을 얻을 수 없습니다루아

tbl = { 
    [1] = { ['etc2'] = 14477 }, 
    [2] = { ['etc1'] = 1337 }, 
    [3] = { ['etc3'] = 1336 }, 
    [4] = { ['etc4'] = 1335 } 
} 

for i = 1, #tbl do 
    table.sort(tbl, function(a, b) return a[i] > b[i] end) 
    print(tbl[i] .. '==' .. #tbl) 
end 

을이 오류를 얻기 : 시도가이 개 전무 값

을 비교하기는 후속 table value sorting in lua

+0

루프 내부에서 테이블을 정렬하지 않을 것이라고 생각합니다. 또한 정확히 어떻게 정렬하려고합니까? 'a [i]'는 문자열 인덱스가있는 테이블이기 때문에 nil입니다. –

+0

SO Lucas에 오신 것을 환영합니다. 질문을 명확하게해야 할 때 새로운 질문을 열기보다는 게시 버튼 아래에있는 수정 버튼을 사용하십시오. 이 Q & A가 문제를 가장 잘 처리한다고 생각하기 때문에 다른 두 개를이 두 개로 복제 할 것입니다. – BMitch

+0

비슷한 질문 : http://stackoverflow.com/questions/2038418/associatively-sorting-a-table-by-value-in-lua – BMitch

답변

5
하는 것입니다

어때? 그 방법으로는 쉽게 정렬하고 난 단지 테이블의 요소마다하지 번, 한 번 table.sort 전화 참고하게 데이터를 정리

tbl = { 
    { 'etc3', 1336 }, 
    { 'etc2', 14477 }, 
    { 'etc4', 1335 }, 
    { 'etc1', 1337 }, 
} 

table.sort(tbl, function(a, b) return a[2] > b[2] end) 

for k,v in ipairs(tbl) do 
    print(v[1], ' == ', v[2]) 
end 

. 서브 테이블의 두 번째 값을 기준으로 정렬합니다. 이는 내가 원하는 것으로 생각합니다.