WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaScriptで配列のソート結果の取得。

0:[投稿] abc [2004/01/27 18:59 ][環境:IE6 ]

a = new Array();
a[0] = 'aaa';
a[1] = 'ccc';
a[2] = 'bbb';

このようなデータがあった場合、配列に格納されているデータをソートした
結果の添え字だけを取得したいのですが、どのように行えばよいのでしょうか?

上の例だと、0,2,1という結果が欲しいのです。

sort()など色々とやってみましたが、ロジックが難しくなってしまい結局
出来てません。どのように行えば出来るのでしょうか?


1:[回答] [2004/01/27 21:26 ]

用途によっては適さないかもしれないけど
a[i]をオブジェクトにして添え字をプロパティに持たせとくとか。

for (var i=0; i<a.length; i++) a[i]=Object(a[i]), a[i].n=i;
a.sort();
for (var i=0,b=[]; i<a.length; i++) b[i]=a[i].n;
alert(b);


2:[回答] abc [2004/01/27 21:46 ]

有り難うございます。
実際に試したところ、希望どおりの動きでした。助かります。

ですが、ちょっと分からないところがあるのですが...
a[i] = Object(a[i]);
の部分ですが、new Object(); なら知っているのですが、このObject(a[i])
というのはどういうものなのでしょうか?


3:[回答] [2004/01/27 22:09 ]

引数が文字列ならStringオブジェクトに、
論理値ならBooleanオブジェクトに、
数値ならNumberオブジェクトに変換したものを返します。
null, undefined の場合は空の Object オブジェクトを返します。
オブジェクトならそのオブジェクトをそのまま返します。


4:[完了] abc [2004/01/27 22:31 ]

ありがとうございます。
そんな仕組みになっているのですね。

JavaScript触り始めてもう2年近くなるんですが、あのような
記述は始めて見ました。私が知らなすぎなのかもしれませんが..。

色々勉強になりました。有り難うございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World