2017-08-11 15 views
1

I Iは、製品IDレジスタを読んで異なる製品配列はユニークである

Products = { 
     ['A'] = { 0x01, 0x02, 0x03 }, 
     ['B'] = { 0x11 }, 
     ['C'] = { 0x20, 0x22 } 
} 

のIDを含むテーブルには、値がユニークIDが上記の1(すなわち0x03の)私がある持っていますこのIDが対応する製品を読み取ろうとしています。 ID = 0x03からKey = 'A'を取得する方法を教えてください。

答えて

2

あなたは、テーブルを検索する必要があります。

function findproduct(id) 
     for k,v in pairs(Products) do 
       for _,i in pairs(v) do 
         if i==id then return k end 
       end 
     end 
end 
print(findproduct(0x03)) 

テーブルが長く、あなたは、非常に頻繁にこれを行うインデックス構築を検討する必要がある場合は、次のインデックスを作成するための

Index = {} 
for k,v in pairs(Products) do 
     for _,i in pairs(v) do 
       Index[i]=k 
     end  
end  
print(Index[0x03]) 
+0

+1を。私のテーブルは非常に頻繁に拡大しないので。 Keys = IDとValue = Productsのようにテーブルを再構築することができました。しかし、これは将来、読者にとって非常に論理的に見えません。 Products = {}テーブルを宣言しているときにインデックステーブルを作成する方法はありますか?私はfindproduct()への関数呼び出しをスキップすることができますか? –

+0

@ waqas_sha、2番目のコードを 'MakeIndex'関数にラップすることができます。 – lhf

関連する問題