2009-07-18 35 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="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4319274062" 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.voidcc.com/question/p-esuycnqj-s.html" target="_blank" title="アルファベット順の並べ替え"> アルファベット順の並べ替え </a> </li> <li> 2. <a href="http://ja.voidcc.com/question/p-hjqufgtm-eq.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li> 3. <a href="http://ja.voidcc.com/question/p-benkrkxy-ev.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li> 4. <a href="http://ja.voidcc.com/question/p-djysvzjr-bp.html" target="_blank" title="アルファベット順の配列の並べ替え"> アルファベット順の配列の並べ替え </a> </li> <li> 5. <a href="http://ja.voidcc.com/question/p-gdmewegh-cy.html" target="_blank" title="アルファベット順の配列の並べ替え"> アルファベット順の配列の並べ替え </a> </li> <li> 6. <a href="http://ja.voidcc.com/question/p-gcvmomkn-dc.html" target="_blank" title="Excelのアルファベット順の並べ替え"> Excelのアルファベット順の並べ替え </a> </li> <li> 7. <a href="http://ja.voidcc.com/question/p-wlulwbhi-dx.html" target="_blank" title="NSSortDescriptorアルファベット順の並べ替え"> NSSortDescriptorアルファベット順の並べ替え </a> </li> <li> 8. <a href="http://ja.voidcc.com/question/p-exzxdyyc-ba.html" target="_blank" title="アルファベット順にバックボーンコレクションを並べ替える"> アルファベット順にバックボーンコレクションを並べ替える </a> </li> <li> 9. <a href="http://ja.voidcc.com/question/p-xqvlspua-u.html" target="_blank" title="JSONをアルファベット順に並べ替え"> JSONをアルファベット順に並べ替え </a> </li> <li> 10. <a href="http://ja.voidcc.com/question/p-xhqwnigl-dc.html" target="_blank" title="javascriptでアルファベット順に並べ替え"> javascriptでアルファベット順に並べ替え </a> </li> <li> 11. <a href="http://ja.voidcc.com/question/p-qkssuyle-dw.html" target="_blank" title="JTreeノードをアルファベット順に並べ替え"> JTreeノードをアルファベット順に並べ替え </a> </li> <li> 12. <a href="http://ja.voidcc.com/question/p-bvaiahvo-bx.html" target="_blank" title="アルファベット順にタクソン(ブランド)を並べ替え"> アルファベット順にタクソン(ブランド)を並べ替え </a> </li> <li> 13. <a href="http://ja.voidcc.com/question/p-tuxjftlx-ca.html" target="_blank" title="アルファベット順にアルファベット順に並べ替えます。"> アルファベット順にアルファベット順に並べ替えます。 </a> </li> <li> 14. <a href="http://ja.voidcc.com/question/p-rxjfahte-bg.html" target="_blank" title="配列を並べ替える、そのようにアルファベット順に"> 配列を並べ替える、そのようにアルファベット順に </a> </li> <li> 15. <a href="http://ja.voidcc.com/question/p-ocpwuaal-dk.html" target="_blank" title="jQuery/Tablesorter:二次アルファベット順の並べ替えを維持する"> jQuery/Tablesorter:二次アルファベット順の並べ替えを維持する </a> </li> <li> 16. <a href="http://ja.voidcc.com/question/p-ggymevtn-eg.html" target="_blank" title="リストボックスの項目をアルファベット順に並べ替え"> リストボックスの項目をアルファベット順に並べ替え </a> </li> <li> 17. <a href="http://ja.voidcc.com/question/p-fjeubosa-eu.html" target="_blank" title="複数の値をアルファベット順に並べ替え[Excel]"> 複数の値をアルファベット順に並べ替え[Excel] </a> </li> <li> 18. <a href="http://ja.voidcc.com/question/p-oaimvyvw-cm.html" target="_blank" title="Netfix QueueSorter(chrome) - グループをアルファベット順に並べ替えるスクリプトのヘルプ"> Netfix QueueSorter(chrome) - グループをアルファベット順に並べ替えるスクリプトのヘルプ </a> </li> <li> 19. <a href="http://ja.voidcc.com/question/p-vnghyglu-r.html" target="_blank" title="アルファベット順にコンボボックスの値を並べ替え"> アルファベット順にコンボボックスの値を並べ替え </a> </li> <li> 20. <a href="http://ja.voidcc.com/question/p-tphkarbb-ce.html" target="_blank" title="Delphiのアルファベット順でない並べ替え"> Delphiのアルファベット順でない並べ替え </a> </li> <li> 21. <a href="http://ja.voidcc.com/question/p-ncmuawqk-br.html" target="_blank" title="配列の内容をアルファベット順に並べ替え"> 配列の内容をアルファベット順に並べ替え </a> </li> <li> 22. <a href="http://ja.voidcc.com/question/p-xzfyahnu-dt.html" target="_blank" title="挿入ソートアルゴリズムを使用したアルファベット順の並べ替えc#"> 挿入ソートアルゴリズムを使用したアルファベット順の並べ替えc# </a> </li> <li> 23. <a href="http://ja.voidcc.com/question/p-oedwjbta-ev.html" target="_blank" title="MS Excelの式:長さとアルファベット順のデータの並べ替え(降順)"> MS Excelの式:長さとアルファベット順のデータの並べ替え(降順) </a> </li> <li> 24. <a href="http://ja.voidcc.com/question/p-wfqjqqsg-dy.html" target="_blank" title="SHELL出力をアルファベット順に並べ替え"> SHELL出力をアルファベット順に並べ替え </a> </li> <li> 25. <a href="http://ja.voidcc.com/question/p-hmdgibfk-bq.html" target="_blank" title="アルファベット順に並べ替え、グループで表示"> アルファベット順に並べ替え、グループで表示 </a> </li> <li> 26. <a href="http://ja.voidcc.com/question/p-feukianm-dd.html" target="_blank" title="C#でアルファベット順に配列を並べ替える"> C#でアルファベット順に配列を並べ替える </a> </li> <li> 27. <a href="http://ja.voidcc.com/question/p-ueskpzyl-by.html" target="_blank" title="2d配列をJavaでアルファベット順に並べ替え"> 2d配列をJavaでアルファベット順に並べ替え </a> </li> <li> 28. <a href="http://ja.voidcc.com/question/p-uiegjxas-dm.html" target="_blank" title="2番目の列に従って数値順とアルファベット順に並べ替え"> 2番目の列に従って数値順とアルファベット順に並べ替え </a> </li> <li> 29. <a href="http://ja.voidcc.com/question/p-kqmqpdxh-dv.html" target="_blank" title="Dojox.grid.datagrid並べ替え順序"> Dojox.grid.datagrid並べ替え順序 </a> </li> <li> 30. <a href="http://ja.voidcc.com/question/p-hhlwochu-bk.html" target="_blank" title="Spark DataFrame group降順で並べ替えて並べ替え"> Spark DataFrame group降順で並べ替えて並べ替え </a> </li> </ul> </div> <div> <script async src="//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="3534119089"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img2.voidcc.com/voidso/script/side.js?t=1652515422545"></script> <script type="text/javascript" src="http://img2.voidcc.com/voidso/plugin/highlight/highlight.pack.js"></script> <link href="http://img2.voidcc.com/voidso/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="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- VOIDCC问答侧边栏广告 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3862022848" 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.voidcc.com/question/p-mrwzfvsn-ou.html" target="_blank" title="JavaのJTextField内のクリアテキスト"> JavaのJTextField内のクリアテキスト </a> </li> <li class="side_article_list_item"> 2. <a href="http://ja.voidcc.com/question/p-bkjvmiga-os.html" target="_blank" title="Acumatica処理画面ARTranカスタムフィールドを更新するカスタムテーブルフィールドも更新する必要があります"> Acumatica処理画面ARTranカスタムフィールドを更新するカスタムテーブルフィールドも更新する必要があります </a> </li> <li class="side_article_list_item"> 3. <a href="http://ja.voidcc.com/question/p-bkutfafw-os.html" target="_blank" title="アクティブなサイドバーでコンテンツを中央に配置するにはどうすればいいですか?"> アクティブなサイドバーでコンテンツを中央に配置するにはどうすればいいですか? </a> </li> <li class="side_article_list_item"> 4. <a href="http://ja.voidcc.com/question/p-gpolxkfh-ou.html" target="_blank" title="なぜデバッグモードで構造体の大きなベクトルの要素にアクセスするのが、より小さなものにアクセスするよりも遅いのですか?"> なぜデバッグモードで構造体の大きなベクトルの要素にアクセスするのが、より小さなものにアクセスするよりも遅いのですか? </a> </li> <li class="side_article_list_item"> 5. <a href="http://ja.voidcc.com/question/p-hewkuisu-ot.html" target="_blank" title="「状態」のオブジェクトをreact reduxで更新するにはどうすればよいですか?私の減速で"> 「状態」のオブジェクトをreact reduxで更新するにはどうすればよいですか?私の減速で </a> </li> <li class="side_article_list_item"> 6. <a href="http://ja.voidcc.com/question/p-bzqgazwe-op.html" target="_blank" title="WebElementには属性がありませんw3c"> WebElementには属性がありませんw3c </a> </li> <li class="side_article_list_item"> 7. <a href="http://ja.voidcc.com/question/p-tsqyiqjf-oh.html" target="_blank" title="iOS App Store提出時に住所が必要"> iOS App Store提出時に住所が必要 </a> </li> <li class="side_article_list_item"> 8. <a href="http://ja.voidcc.com/question/p-wyjayhzj-oh.html" target="_blank" title="AlertDialogの助けを借りてカスタムアレイアダプタに新しいオブジェクトを追加"> AlertDialogの助けを借りてカスタムアレイアダプタに新しいオブジェクトを追加 </a> </li> <li class="side_article_list_item"> 9. <a href="http://ja.voidcc.com/question/p-awtdftvz-om.html" target="_blank" title="私はRのカーネルで使用jupyterノートブックでJupyterノート"> 私はRのカーネルで使用jupyterノートブックでJupyterノート </a> </li> <li class="side_article_list_item"> 10. <a href="http://ja.voidcc.com/question/p-fzluksaw-ok.html" target="_blank" title="プロップ名として反応コンポーネントに渡される画像を要求する方法はありますか?"> プロップ名として反応コンポーネントに渡される画像を要求する方法はありますか? </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.voidcc.com/question/p-esuycnqj-s.html" target="_blank" title="アルファベット順の並べ替え"> アルファベット順の並べ替え </a> </li> <li class="side_article_list_item"> 2. <a href="http://ja.voidcc.com/question/p-hjqufgtm-eq.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li class="side_article_list_item"> 3. <a href="http://ja.voidcc.com/question/p-benkrkxy-ev.html" target="_blank" title="アルファベット順に並べ替え"> アルファベット順に並べ替え </a> </li> <li class="side_article_list_item"> 4. <a href="http://ja.voidcc.com/question/p-djysvzjr-bp.html" target="_blank" title="アルファベット順の配列の並べ替え"> アルファベット順の配列の並べ替え </a> </li> <li class="side_article_list_item"> 5. <a href="http://ja.voidcc.com/question/p-gdmewegh-cy.html" target="_blank" title="アルファベット順の配列の並べ替え"> アルファベット順の配列の並べ替え </a> </li> <li class="side_article_list_item"> 6. <a href="http://ja.voidcc.com/question/p-gcvmomkn-dc.html" target="_blank" title="Excelのアルファベット順の並べ替え"> Excelのアルファベット順の並べ替え </a> </li> <li class="side_article_list_item"> 7. <a href="http://ja.voidcc.com/question/p-wlulwbhi-dx.html" target="_blank" title="NSSortDescriptorアルファベット順の並べ替え"> NSSortDescriptorアルファベット順の並べ替え </a> </li> <li class="side_article_list_item"> 8. <a href="http://ja.voidcc.com/question/p-exzxdyyc-ba.html" target="_blank" title="アルファベット順にバックボーンコレクションを並べ替える"> アルファベット順にバックボーンコレクションを並べ替える </a> </li> <li class="side_article_list_item"> 9. <a href="http://ja.voidcc.com/question/p-xqvlspua-u.html" target="_blank" title="JSONをアルファベット順に並べ替え"> JSONをアルファベット順に並べ替え </a> </li> <li class="side_article_list_item"> 10. <a href="http://ja.voidcc.com/question/p-xhqwnigl-dc.html" target="_blank" title="javascriptでアルファベット順に並べ替え"> javascriptでアルファベット順に並べ替え </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.voidcc.com/contact">お問い合わせ</a></li> <li>© 2020 JA.VOIDCC.COM</li> <li><a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">沪ICP备13005482号-13</a></li> <li><script type="text/javascript" src="https://s9.cnzz.com/z_stat.php?id=1280098168&web_id=1280098168"></script></li> <li><a href="http://cn.voidcc.com/" target="_blank" title="程序问答园区">简体中文</a></li> <li><a href="http://hk.voidcc.com/" target="_blank" title="程序問答園區">繁體中文</a></li> <li><a href="http://ru.voidcc.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.voidcc.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.voidcc.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.voidcc.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.voidcc.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.voidcc.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.voidcc.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.voidcc.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.voidcc.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.voidcc.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.voidcc.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-77509369-5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-77509369-5'); </script> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?67d4731349f0b00136755b80364ce381"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>