![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ハッシュのキーをソートして取り出したいです。
perlで表現すると、以下の様なかんじです。
foreach $key (sort keys %hash) {
...
}
そこで、prototype.jsを使って以下の様に書いてみました。
<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
</head>
<body >
<script >
var table = {c:'C', b:'B', a:'A'};
$H(table).keys().sort().each(function(key){
alert(key + ' ' + table[key]);
});
</script>
</body>
</html>
他に良い方法ありましたら、教えてください。
No.1ベストアンサー
- 回答日時:
配列のsortをつかってみては?
<script >
var table = {c:'C', b:'B', a:'A'};
var newtable =new Object;
var keylist=new Array;
for(var i in table) keylist.push(i);
keylist.sort();
for(var i in keylist) newtable[keylist[i]]=table[keylist[i]];
for(var i in newtable) document.write(i+":"+newtable[i]);
</script>
yambejpさん
ご回答ありがとうございます。
提示して頂いた方法で簡素にできますね。
しかし、prototype.jsとの併用は出来ないみたいです。。
for(var i in keylist) がうまくいかないのかなぁ。
No.3
- 回答日時:
最近のPrototype.jsはObject.prototypeにプロパティを追加しないと思います。
for(var i in keylist)がうまく動かなかったのは
Prototype.jsがArray.prototypeを拡張しているからでは無いですか?
keylistは配列なのですから、無難に
for(var i=0; i<keylist.length; i++)
の方が良い気がします。
Gottholdさん、ご回答ありがとうございます。
>keylistは配列なのですから、無難に
>for(var i=0; i<keylist.length; i++)
>の方が良い気がします。
たしかにそうですね。なっとくです。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?5a7ff87)
No.2
- 回答日時:
for(var i in keylist) がうまくいかないというのはこういうことでしょうか。
Prototype.js は Object.prototype に独自のプロパティを設置するタイプのライブラリだったと思います。
例えば、
javascript:
Object.prototype.hoge='foo';
var obj={'a':1};
for(var x in obj)alert(x+' : '+obj[x]);
というブックマークレットを実行すると、アラートは2回起こります。(a : 1 と hoge : foo です)
こっちだったら
javascript:
Object.prototype.hoge='foo';
var obj={'a':1};
for(var x in obj)if(obj.hasOwnProperty(x))alert(x+' : '+obj[x]);
アラートは1回だけです。(a : 1 だけ)
余談ですが、こういう意図しない弊害が出たりすることがあるので、Object.prototype を無闇に弄るのはやめましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ジャバスプリクトについて
-
google apps scriptの終了のさせ方
-
flickrのAPIを用い、任意の写真...
-
【競プロ】アルゴリズムの仕組...
-
googleスプレッドシートのApps ...
-
setTimeoutによる繰り返しが途...
-
なぜmatchメソッドがエラーにな...
-
ジェネレーターの作り方
-
C# 演算 奇数と偶数 表現の仕方
-
シンプルなweb版スタンプラリー...
-
alert表示で計算結果がうまく表...
-
文字列の置換
-
【javascript】ハッシュのキー...
-
最近Javascriptの勉強を始めた...
-
javascriptでiframeのURL変更は?
-
Ajax LightBoxを使ったサムネイ...
-
カラー表記の足し算プログラム
-
Google Apps Script で添付ファ...
-
javascriptを用いて作成された...
-
Perlの配列をJavaScriptに渡せ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
なぜmatchメソッドがエラーにな...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
翌月を取得するGASが分かりません
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
javascriptでiframeのURL変更は?
-
C#で、ContextMenuStripに動的...
-
ASP.NET MVCでObjectをjsに渡す
-
javascriptでテーブルに追加し...
-
1日1回引けるJavaScriptおみく...
-
JavaScriptを使って毎日決まっ...
-
googleスプレッドシートのApps ...
-
JavaScriptで文字列の特定文字...
-
アクセス時からのカウントダウ...
-
ローカルにあるファイルを検索...
おすすめ情報