• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[javascript] 配列を使ってテーブルデータのソート)

[javascript] 配列を使ってテーブルデータのソート

このQ&Aのポイント
  • javascriptで配列を使ってテーブルデータのソートをしたいです。
  • 上記の配列をソートして特定の順序にしたいです。
  • 数値の場合は問題ないのですが、文字列の場合にうまくソートできないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

しまった、きちんと検証してませんでした。 以下でうまくいくと思います。 list1.sort(function(a, b){return (a.t==b.t)?(a.n>b.n?1:-1):(a.t>b.t?1:-1);});

kingfruits
質問者

お礼

yambejpさん ご回答ありがとうございました。 期待した結果が得られました。

その他の回答 (2)

  • Werner
  • ベストアンサー率53% (395/735)
回答No.2

"a"-"b" の結果を確認してみましたか? 確認してみればこれでは比較できないことが分かると思います。 JavaScriptでは不等号で文字列の辞書順比較ができるので 横着せずに不等号で比較しましょう。 if文を使うなどして、 第1引数が第2引数より小さい(第1引数の方を前に並べたい)場合は負数、 同じ場合は0、 第1引数が第2引数より大きい場合は正数を返すようにするだけです。

kingfruits
質問者

補足

ご回答ありがとうございます。 list1.sort(function(a, b) {return (a.t > b.t) ? 1:-1||a.n -b.n}); としてみましたが、 a 2 a 3 a 1 b 2 b 1 となり、期待した結果が得られませんでした。 a 1 a 2 a 3 b 1 b 2 が期待してる結果です。 実は、 return (a.t > b.t) ? 1:-1||a.n -b.n と書いていますが、||の意味がよく解ってません。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>list1.sort(function(a, b) {return a.t-b.t||a.n-b.n}); これって文字列を引き算してませんか? 文字列の比較も不等号がつかえるのでこうしてみては? list1.sort(function(a, b) {return a.t > b.t||a.n >b.n});

kingfruits
質問者

補足

ご回答ありがとうございます。 list1.sort(function(a, b) {return a.t > b.t||a.n >b.n}); としてみましたが、結果は a 2 b 1 a 3 a 1 b 2 となり、期待した結果は得られませんでした。

関連するQ&A

専門家に質問してみよう