人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascript で下記のような配列を逆順にする関数はありませんか?
無い場合は、おすすめコードを教えてください。
(ソートではありません、順序を逆にしたいのです)
(phpでいうarray_reverseと同じ結果を求めています)

hoge['aaa'] = 'あいうえお';
hoge['bbb'] = 'かきくけこ';
hoge['ccc'] = 'さしすせそ';

よろしくお願いします。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● studiocherry
●0ポイント

えーと、

hoge.reserve();

で、いいのかな。
(簡単すぎるから、なにか条件を忘れているかな?)


worldtravelさんのコメント
あれ... これさっきやったらうまく行かなかったので質問してみたんですけど... もう一度試してみます。

worldtravelさんのコメント
「reserve()」っていくつかのサイトに載っているんですけど、 「reverse()」とは違うんですか? 「reserve()」だと、エラーで止まってしまいます。 ちなみに「reverse()」は var hoge = new Array('あいうえお','かきくけこ','さしすせそ'); なら逆順になりますが、 var hoge = []; hoge['aaa'] = 'あいうえお'; hoge['bbb'] = 'かきくけこ'; hoge['ccc'] = 'さしすせそ'; だと逆順になりません。

worldtravelさんのコメント
ちなみに下記のように確認しています。 間違っているでしょうか。 for (index in hoge) { alert(index + ':' + hoge[index]); }

a-kuma3さんのコメント
reserve は、英単語の意味から考えても(良い方に取れば)タイプミスでしょう。

worldtravelさんのコメント
やはりそうなのですね。 しかしそのタイプミスでいくつかのサイトがあるのも不思議ですね ーー;

worldtravelさんのコメント
はじめて reserve() を見たときは、 まじめに、これは連想配列用なのかな?と信じて試しました ^^;

2 ● a-kuma3
●100ポイント ベストアンサー

Array#reverse() は、連想配列 (文字列をキーにした配列) には効かないみたいです。
なので、こんな感じではどうでしょう。

function dump_array(a) {
 console.log("--------------------");
 for (var i in a) {
 console.log(i + " : " + a[i]);
 }
}

function reverse_array_ex(a) {
 var key = [];
 for (var i in a) {
 key.push(i);
 }
 key.reverse();
 var ret = [];
 for (var i in key) {
 ret[key[i]] = a[key[i]];
 }
 return ret;
}

var hoge = [];
hoge['aaa'] = 'あいうえお';
hoge['bbb'] = 'かきくけこ';
hoge['ccc'] = 'さしすせそ';
hoge['ddd'] = 'たちつてと';
hoge['eee'] = 'なにぬねの';

dump_array(hoge);

// Array#reverse() は、連想配列には効かない
hoge.reverse();
dump_array(hoge);

// key を逆順に並べなおして、新たに連想配列を作り直す
hoge = reverse_array_ex(hoge);
dump_array(hoge);

a-kuma3さんのコメント
>> しかしそのタイプミスでいくつかのサイトがあるのも不思議ですね ーー; << 確かに。ググってみると、引っかかりますね。 迷ったときは、公式のサイトを当たるのが良いと思います(分かりにくいかもしれないですけど)。 [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array:title] [http://msdn.microsoft.com/en-us/library/k4h76zbx.aspx:title]

worldtravelさんのコメント
ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ