プロが教える店舗&オフィスのセキュリティ対策術

配列のソートについての質問です。
よろしくお願いします。
var syouhin = new Array(10); //商品名
var kosuu = new Array(10);  //商品個数
syouhin[0] = "apple";
syouhin[1] = "orange";
...
syouhin[9] = "banana";

kosuu[0] = "4";
kosuu[1] = "2";
...
kosuu[9] = "5";
個数は[]の数字の商品に対応。
個数をソート
kosuu.sort();
ここでソートした個数に対応して商品もソートして、
for (i=0; i<kosuu.length; i++){
document.write(syouhin[i],kosuu[i],", ");
document.write("<br>");
}
と表示したいのですが、ソートした個数に対応した商品のソートの
仕方がわかりません。
どのような方法があるのでしょうか?
よろしくお願いします。

A 回答 (2件)

#1の方はCで作ることを前提に書かれているみたいですね。


JavaScriptなら組み込みでArray に sort メソッドがありますから、
ソートルーチンを自作するまでもありません。

あとは商品名とその個数との対応ですが、お手軽にオブジェクトに
まとめてしまうということで以下のようにしてみてはどうでしょう?

<html>
<body>
<script language="Javascript">
function Item(name, count) {
this.name = name
this.count = count
}
function cmp_func(lhs, rhs) {
return rhs.count - lhs.count
}
items = new Array(10)
items[0] = new Item("apple", 12)
items[1] = new Item("orange", 34)
items[2] = new Item("banana", 15)
items[3] = new Item("grape", 99)
items[4] = new Item("strawberry", 7)
items[5] = new Item("rasberry", 55)
items[6] = new Item("blueberry", 22)
items[7] = new Item("lemon", 4)
items[8] = new Item("nable", 33)
items[9] = new Item("pear", 44)

for (i=0; i<items.length; i++)
document.write(items[i].count, ":", items[i].name, "<br>")


items.sort(cmp_func)

document.write("<hr>")

for (i=0; i<items.length; i++)
document.write(items[i].count, ":", items[i].name,"<br>")
</script>
</body>
</html>
    • good
    • 0
この回答へのお礼

お礼が遅れすいませんでした。
迅速かつ丁寧な回答で、大変助かりました。
おかげでうまくいきました!
また質問をすることがあるかと思いますが、
その節はよろしくご教授願います。

お礼日時:2006/12/14 15:54

★アドバイス


・商品と個数はペアで管理させます。→構造体を使って。
・こうしないと、商品と個数の対応が出来ません。
・構造体をお勉強しましょう。
・また、ソートのアルゴリズムも勉強してみましょう。
・バブル・ソート、クイック・ソートなどいろいろあります。
・『C言語』、『ソート』、『アルゴリズム』などで検索してみて下さい。
・短いですが重要なのは、商品と個数はペアで管理すること。
・以上。おわり。さようなら。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
これから少しづつ勉強していきます。

お礼日時:2006/12/14 15:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!