- ベストアンサー
データを降順・昇順に並び替えるには
現在ポケモン図鑑を作っていまして、(^^; 下記のようなものが書かれたファイルを読み込んで表示しています。 ・・・ 25,ピカチュウ,でんき,6, 26,ライチュウ,でんき,30, 27,サンド,じめん,12, ・・・ 1行ずつがそのポケモンのデータで、4つ目には「重さ」が入るようになっています。 それで、ポケモンをリスト表示してその中から選ぶようになっているんですけど、それを重さが重い順、あるいは軽い順にして表示するにはどうすればいいのでしょうか。 回答する気おきないと思いますが、 よろしくお願いします。 参考>http://poke.sub.jp/poke_cgi/web_poke/main.cgi
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そ~いうリストが @cards という配列にあるとすれば, @sorted_cards = sort { (split(/,/, $a))[3] < (split(/,/, $b))[3]; } @cards; で昇順にソートできます.
その他の回答 (1)
- okiyoshi
- ベストアンサー率34% (11/32)
sortのデフォルトは文字(バイナリ)ソートなので、 体重は数値としてソートした方がいいんじゃないかと・・ @pokemon_listにデータがあるとして・・ my @sorted_list = sort { # (*1)昇順の場合 (split /,/, $a)[3] <=> (split /,/, $b)[3]; } @pokemon_list; 降順の場合は、(*1)が、 (split /,/, $b)[3] <=> (split /,/, $a)[3]; となりまする。 ちなみに、[perl sort]でググると・・
お礼
うーん・・ やってみましたが、よく分かりませんでした^^;No.1の方の回答を参考にさせていただきます。 でもお陰で降順の方法が分かりました。 ありがとうございました。
お礼
原理が分かりませんでしたがすごいです! ありがとうございました。