2009-07-18 27 views
3

私は、ユーザーが入力するランダムなコンテンツでいっぱいのテーブルを持っています。ユーザーがこの表をすばやく検索できるようにして、検索を容易にする方法の1つは、表をアルファベット順に並べ替えることです。もともと、表には、このような何かを見て:ルア - アルファベット順のテーブルの並べ替え

myTable = { 
    Zebra = "black and white", 
    Apple = "I love them!", 
    Coin = "25cents" 
} 

私はアルファベット順ではなく、それらに出力するようにそのようにテーブルの内容を私を許可pairsByKeys()関数を実装することができました。検索が設定される方法のため、テーブル自体はアルファベット順である必要があります。非数値添字のテーブルはアルファベット順にソートすることができないこと - 私は(あなたが私に教えて、おそらく間違って)理解するために来た時間が経過した後

function pairsByKeys (t, f) 
    local a = {} 
    for n in pairs(t) do 
     table.insert(a, n) 
    end 
    table.sort(a, f) 
    local i = 0  -- iterator variable 
    local iter = function() -- iterator function 
     i = i + 1 
     if a[i] == nil then 
      return nil 
     else 
      return a[i], t[a[i]] 
     end 
    end 
    return iter 
end 

。その後、私はそれを回避する方法を考え始めたので - 私が考える一つの方法は、テーブルをソートして、数値添字の配列にそれぞれの値を入れている、以下のようなもの:原則として

myTable = { 
    [1] = { Apple = "I love them!" }, 
    [2] = { Coin = "25cents" }, 
    [3] = { Zebra = "black and white" }, 
} 

を、私はこれは動作するはずと感じ、何らかの理由で私はそれに問題があります。私のテーブルはソートされていないようです。上記の関数を使用してテーブルをソートする関数は次のとおりです。

SortFunc = function() 
    local newtbl = {} 
    local t = {} 
    for title,value in pairsByKeys(myTable) do 
     newtbl[title] = value 
     tinsert(t,newtbl[title]) 
    end 
    myTable = t 
end 

myTableはまだソートされません。どうして?

答えて

2

あなたの新しいテーブルが連続した整数キーを必要とテーブルであることを値自体必要です。ですから、このために何かしたい:

SortFunc = function (myTable) 
    local t = {} 
    for title,value in pairsByKeys(myTable) do 
     table.insert(t, { title = title, value = value }) 
    end 
    myTable = t 
    return myTable 
end 

をこれはpairsByKeys

+0

...私はそれがない何を考えないこのソリューションは、私のために動作することを前提としています。 = <value>(これはうまくいきませんでした)という名前で保存しようとしましたが、 "title" = <title>と "value" = <value>という名前で保存すると同じ効果が得られます。 ありがとう! – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1038284119" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">3<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>ルアの<em>テーブル</em>は、ハイブリッドであってもよい。数値キーの場合、1から始まり、<em>ベクトル</em>を使用し、その他のキーでは<em>ハッシュ</em>を使用します。 <br><br><code class="prettyprint-override">{1="foo", 2="bar", 4="hey", my="name"}</code><br> 2は、ベクター内に配置され、例えば、4 &はハッシュテーブルに配置されますマイ。 がシーケンスを壊したため、それがハッシュテーブルに組み込む理由です。ここを見てのLuaのテーブルをソートする方法については</p> <p>:<a href="http://www.lua.org/pil/19.3.html" rel="nofollow noreferrer">19.3 - Sort</a></p> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/1146724">出典</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2009-07-18 04:29:08</span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">関連する問題</div> <ul class="relative_list"> <li> 1. <a href="http://ja.uwenku.com/question/p-bluprbwb-et.html" target="_blank" title="アルファベット順の並べ替え"> アルファベット順の並べ替え </a> </li> <li> 2. <a href="http://ja.uwenku.com/question/p-pedefidj-ba.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li> 3. <a href="http://ja.uwenku.com/question/p-vcnfhiae-es.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li> 4. <a href="http://ja.uwenku.com/question/p-vcebmwvj-kv.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li> 5. <a href="http://ja.uwenku.com/question/p-mlmyhmgs-mv.html" target="_blank" title="ドロップダウンリストのアルファベット順の並べ替え"> ドロップダウンリストのアルファベット順の並べ替え </a> </li> <li> 6. <a href="http://ja.uwenku.com/question/p-xgtuwccs-oo.html" target="_blank" title="アルファベット順の辞書の並べ替え"> アルファベット順の辞書の並べ替え </a> </li> <li> 7. <a href="http://ja.uwenku.com/question/p-allwwefi-ba.html" target="_blank" title="アルファベット順の配列の並べ替え"> アルファベット順の配列の並べ替え </a> </li> <li> 8. <a href="http://ja.uwenku.com/question/p-yatggfre-ct.html" target="_blank" title="アルファベット順の配列の並べ替え"> アルファベット順の配列の並べ替え </a> </li> <li> 9. <a href="http://ja.uwenku.com/question/p-sgkvcwsy-cy.html" target="_blank" title="Excelのアルファベット順の並べ替え"> Excelのアルファベット順の並べ替え </a> </li> <li> 10. <a href="http://ja.uwenku.com/question/p-vesncnfm-gq.html" target="_blank" title="アルファベット順のチェックボックスリストの並べ替え"> アルファベット順のチェックボックスリストの並べ替え </a> </li> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4606349252"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <li> 11. <a href="http://ja.uwenku.com/question/p-dffomlzj-dw.html" target="_blank" title="NSSortDescriptorアルファベット順の並べ替え"> NSSortDescriptorアルファベット順の並べ替え </a> </li> <li> 12. <a href="http://ja.uwenku.com/question/p-oywfgvor-nz.html" target="_blank" title="アルファベット順のC#並べ替えリスト"> アルファベット順のC#並べ替えリスト </a> </li> <li> 13. <a href="http://ja.uwenku.com/question/p-ekgimcrv-oa.html" target="_blank" title="PHP:アルファベット順のZIP並べ替え"> PHP:アルファベット順のZIP並べ替え </a> </li> <li> 14. <a href="http://ja.uwenku.com/question/p-biqggifb-ov.html" target="_blank" title="文字列のアルファベット順とアルファベット順の並べ替え '"> 文字列のアルファベット順とアルファベット順の並べ替え ' </a> </li> <li> 15. <a href="http://ja.uwenku.com/question/p-ufqkvzcv-ey.html" target="_blank" title="アラビア語をアルファベット順に並べ替え"> アラビア語をアルファベット順に並べ替え </a> </li> <li> 16. <a href="http://ja.uwenku.com/question/p-bddevimu-dv.html" target="_blank" title="JTreeノードをアルファベット順に並べ替え"> JTreeノードをアルファベット順に並べ替え </a> </li> <li> 17. <a href="http://ja.uwenku.com/question/p-wznhpaqq-ey.html" target="_blank" title="角度マルチセレクトドロップダウン|アルファベット順に並べ替え"> 角度マルチセレクトドロップダウン|アルファベット順に並べ替え </a> </li> <li> 18. <a href="http://ja.uwenku.com/question/p-eykahppp-b.html" target="_blank" title="JSONをアルファベット順に並べ替え"> JSONをアルファベット順に並べ替え </a> </li> <li> 19. <a href="http://ja.uwenku.com/question/p-csppemnu-n.html" target="_blank" title="アルファベット順にバックボーンコレクションを並べ替える"> アルファベット順にバックボーンコレクションを並べ替える </a> </li> <li> 20. <a href="http://ja.uwenku.com/question/p-gjwvmdbu-hx.html" target="_blank" title="アルファベット順に並べ替えるC++"> アルファベット順に並べ替えるC++ </a> </li> <li> 21. <a href="http://ja.uwenku.com/question/p-vsggscxr-bn.html" target="_blank" title="アルファベット順にタクソン(ブランド)を並べ替え"> アルファベット順にタクソン(ブランド)を並べ替え </a> </li> <li> 22. <a href="http://ja.uwenku.com/question/p-zbvkzzul-cy.html" target="_blank" title="javascriptでアルファベット順に並べ替え"> javascriptでアルファベット順に並べ替え </a> </li> <li> 23. <a href="http://ja.uwenku.com/question/p-bbjzwbib-pb.html" target="_blank" title="アルファベット順、大文字で並べ替え"> アルファベット順、大文字で並べ替え </a> </li> <li> 24. <a href="http://ja.uwenku.com/question/p-rqwfactr-pw.html" target="_blank" title="Javaでアルファベット順に並べ替え"> Javaでアルファベット順に並べ替え </a> </li> <li> 25. <a href="http://ja.uwenku.com/question/p-nfrhjpgc-gu.html" target="_blank" title="BFSでアルファベット順に並べ替え"> BFSでアルファベット順に並べ替え </a> </li> <li> 26. <a href="http://ja.uwenku.com/question/p-vlzmygwr-gu.html" target="_blank" title="アルファベット順の並び順を並べ替える"> アルファベット順の並び順を並べ替える </a> </li> <li> 27. <a href="http://ja.uwenku.com/question/p-rtpkkoqb-ky.html" target="_blank" title="テーブルのセル値を取得し、アルファベット順に並べ替え"> テーブルのセル値を取得し、アルファベット順に並べ替え </a> </li> <li> 28. <a href="http://ja.uwenku.com/question/p-mrxcnqut-kr.html" target="_blank" title="アルファベット順と姓でアルファベット順に並べ替える方法"> アルファベット順と姓でアルファベット順に並べ替える方法 </a> </li> <li> 29. <a href="http://ja.uwenku.com/question/p-onufjfgj-bs.html" target="_blank" title="アルファベット順にアルファベット順に並べ替えます。"> アルファベット順にアルファベット順に並べ替えます。 </a> </li> <li> 30. <a href="http://ja.uwenku.com/question/p-qqgioaql-nr.html" target="_blank" title="アルファベット順の並べ替えられていないリストを並べ替え"> アルファベット順の並べ替えられていないリストを並べ替え </a> </li> </ul> </div> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1575177025"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img.uwenku.com/uwenku/script/side.js?t=1644592048742"></script> <script type="text/javascript" src="http://img.uwenku.com/uwenku/plugin/highlight/highlight.pack.js"></script> <link href="http://img.uwenku.com/uwenku/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="5415218910" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> 最新の質問 </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://ja.uwenku.com/question/p-mrycdvui-np.html" target="_blank" title="疎DIA行列を作成して列を変更する"> 疎DIA行列を作成して列を変更する </a> </li> <li class="side_article_list_item"> 2. <a href="http://ja.uwenku.com/question/p-fzrmmkqx-oc.html" target="_blank" title="beautifulsoupを使用してwebscrapingを完了"> beautifulsoupを使用してwebscrapingを完了 </a> </li> <li class="side_article_list_item"> 3. <a href="http://ja.uwenku.com/question/p-eryzqzzj-oa.html" target="_blank" title="プロンプトの後にユーザ入力を表示するjavascript"> プロンプトの後にユーザ入力を表示するjavascript </a> </li> <li class="side_article_list_item"> 4. <a href="http://ja.uwenku.com/question/p-faglvawg-nz.html" target="_blank" title="エラー:cargaison :: cargaison()の呼び出しで一致する関数がありません"> エラー:cargaison :: cargaison()の呼び出しで一致する関数がありません </a> </li> <li class="side_article_list_item"> 5. <a href="http://ja.uwenku.com/question/p-tgsxyeug-nu.html" target="_blank" title="netCDF4ファイルにパラレル保存するPythonマルチプロセッシング"> netCDF4ファイルにパラレル保存するPythonマルチプロセッシング </a> </li> <li class="side_article_list_item"> 6. <a href="http://ja.uwenku.com/question/p-bxdifebp-ns.html" target="_blank" title="ズーム時にノードスタイルを更新するには?"> ズーム時にノードスタイルを更新するには? </a> </li> <li class="side_article_list_item"> 7. <a href="http://ja.uwenku.com/question/p-cyydvrpx-nr.html" target="_blank" title="分類法カテゴリPermalink"> 分類法カテゴリPermalink </a> </li> <li class="side_article_list_item"> 8. <a href="http://ja.uwenku.com/question/p-uakrqydc-mt.html" target="_blank" title="Bash - 1カップルあたりのパラメータ"> Bash - 1カップルあたりのパラメータ </a> </li> <li class="side_article_list_item"> 9. <a href="http://ja.uwenku.com/question/p-ffwxdefo-ms.html" target="_blank" title="border-style徐々にCSSを広げて"> border-style徐々にCSSを広げて </a> </li> <li class="side_article_list_item"> 10. <a href="http://ja.uwenku.com/question/p-bbsjfphq-nd.html" target="_blank" title="Raspbianはソースからのncursesとvimを構築します"> Raspbianはソースからのncursesとvimを構築します </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> 関連する問題</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://ja.uwenku.com/question/p-bluprbwb-et.html" target="_blank" title="アルファベット順の並べ替え"> アルファベット順の並べ替え </a> </li> <li class="side_article_list_item"> 2. <a href="http://ja.uwenku.com/question/p-pedefidj-ba.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li class="side_article_list_item"> 3. <a href="http://ja.uwenku.com/question/p-vcnfhiae-es.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li class="side_article_list_item"> 4. <a href="http://ja.uwenku.com/question/p-vcebmwvj-kv.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li class="side_article_list_item"> 5. <a href="http://ja.uwenku.com/question/p-mlmyhmgs-mv.html" target="_blank" title="ドロップダウンリストのアルファベット順の並べ替え"> ドロップダウンリストのアルファベット順の並べ替え </a> </li> <li class="side_article_list_item"> 6. <a href="http://ja.uwenku.com/question/p-xgtuwccs-oo.html" target="_blank" title="アルファベット順の辞書の並べ替え"> アルファベット順の辞書の並べ替え </a> </li> <li class="side_article_list_item"> 7. <a href="http://ja.uwenku.com/question/p-allwwefi-ba.html" target="_blank" title="アルファベット順の配列の並べ替え"> アルファベット順の配列の並べ替え </a> </li> <li class="side_article_list_item"> 8. <a href="http://ja.uwenku.com/question/p-yatggfre-ct.html" target="_blank" title="アルファベット順の配列の並べ替え"> アルファベット順の配列の並べ替え </a> </li> <li class="side_article_list_item"> 9. <a href="http://ja.uwenku.com/question/p-sgkvcwsy-cy.html" target="_blank" title="Excelのアルファベット順の並べ替え"> Excelのアルファベット順の並べ替え </a> </li> <li class="side_article_list_item"> 10. <a href="http://ja.uwenku.com/question/p-vesncnfm-gq.html" target="_blank" title="アルファベット順のチェックボックスリストの並べ替え"> アルファベット順のチェックボックスリストの並べ替え </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://ja.uwenku.com/contact">お問い合わせ</a></li> <li>© 2020 JA.UWENKU.COM</li> <li><a target="_blank" href="https://beian.miit.gov.cn/">沪ICP备13005482号-4</a></li> <li><script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1280101193&web_id=1280101193"></script></li> <li><a href="http://www.uwenku.com/" target="_blank" title="优文库">简体中文</a></li> <li><a href="http://hk.uwenku.com/" target="_blank" title="優文庫">繁體中文</a></li> <li><a href="http://ru.uwenku.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.uwenku.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.uwenku.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.uwenku.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.uwenku.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.uwenku.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.uwenku.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.uwenku.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.uwenku.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.uwenku.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.uwenku.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f78a970f17b19a79fc477a3378096f29"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>