JavaScriptで昇順にソートするには?
[上に]
[前に]
[次に]
にょろにょろ
2000/02/21(月) 05:59:56
JavaScriptで、配列内容を小さい順に並べ替えようとして
います。過去ログで検索してみましたが、どれもPerlの内容
でした。
<html>
<head>
<script language="JavaScript">
<!--
var aryHoge = new Array();//1〜10までの数字を入れる配列
for (var i=0 ; i<10 ; i++)
{
aryHoge[i]=10-i;
}
function Hoge() {
aryHoge.sort();//並べ替え
alert(aryHoge);//結果を表示
}
// -->
</script>
</head>
<body>
<form>
<input type="button" value="ソート" onClick="Hoge()">
</form>
</body>
</html>
配列名.sort(★)
で、★に戻り値が正の比較関数を入れると、昇順にソートできる
と聞いたのですが、その★の使い方がわかりません。★を省略
すると、辞書順のソート(1,10,2,3,4,……)になり、大小が
狂ってしまいます。
どうすれば、昇順にソートできるのでしょうか?
Ichi
2000/02/21(月) 07:08:39
http://www.tohoho-web.com/js/array.htm
比較関数は、foo(a,b)のように二つの引数を持ちます。
ここで、引数a,bを比較して、等しかったら0、
aが大きかったら正の値、bが小さかったら負の値を返すと、
昇順にソートできると思います。
(降順かもしれません、試してみてください。
正負を逆にすれば、逆の順序にソートできます)
Ni
2000/02/21(月) 09:18:40
にょろにょろさんの状況(何も指定しない)だと文字列
で比較されているだけだと思います、
単純に sort(a-b)で良かったような気が…
にょろにょろ
2000/02/22(火) 07:15:03
[[解決]]
うぐぅ、こんな身近なところに回答があったとは(>_<)。
なるほど、比較関数は後ろに()をつけないんですね。
どうりでいくら試してもできないわけだ……。
function func(a, b){return(a-b);}//比較関数
aryHoge.sort(func);//昇順にソート
alert(aryHoge);//結果を表示
>単純に sort(a-b)で良かったような気が…
aが存在しないと怒られました(^^;。どうやら、aとbを引数と
思ってくれないようです。
Ichiさん、Niさん、ありがとうございました。おかげさまで
自前のバブルソート関数が2行に変身し、すっきりしました。
[上に]
[前に]
[次に]