• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptで全くの初心者なのですが、)

JavaScript初心者のためのフィッシャーイェーツのシャッフル方法

このQ&Aのポイント
  • JavaScript初心者の方に向けて、フィッシャーイェーツのシャッフル方法を紹介します。
  • JavaScript初心者がフィッシャーイェーツのシャッフルを実装する方法について解説します。
  • フィッシャーイェーツのシャッフルをJavaScriptで実装する方法を、初心者向けに説明します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

いまいち何がしたいのか、よくわかりません a = [1,1,1,5,5,5,9,9,9];←まず代入 for (var a=[],i=0;i<9;++i) a[i]=i;←ここで、再度aを初期化[]して、a[i]=i; とすれば、先の行は無意味です。 this.result = a[shuffle(a.length)] ; shuffle(a.length)←aの長さつまり0~8個なので9の「数値」をshuffleは受け取りますが、function shuffle(array) は、arrayとかいてあり、arrayではなく、数値になってます。 またこの関数は受け取り値そのものがarrayにしているので、 this.result = shuffle(a)[0]でいいようにも思える反面 arrayという書き方は「型」なので「変数名」にするべきですよ。 function shuffle(hoge) { ←とか、別にarrayじゃなければなんでもいい 最後に、 a[shuffle(a.length)] ; ですが、変数メモリの「最後の位置」は、常にUndefinedです。 ”123456789” と入れているつもりでしょうが、0オリジンなので、 これの順番は、 ”123456789” -012345678=合計9個。しかし配列番号に9はない。 したがってメモリの外を参照している。 また、この関数がシャッフルが目的なら、 0~8のどれを書いても、それ自体に意味はなく、結果としても たいした意味を持たない。 "this"が行方不明 this.result という事で、 なんだろうな~ やりたいことをそのまま書いてみませんか? 恐らくは、流れそのものに問題があるように感じたもので。 (酒飲んでるので、意味不明回答になってたらごめんなさい) で、プログラムするとき何でもかんでも表示してみると 上達は早いですよ。 console.log("A=" + a); とか、でデバッグコンソールに表示させて 表示した瞬間の値をどんどん表示させると、動きがわかって 勉強になるのと、覚えも早くなりますよ~ では!がんば~!

bluechart
質問者

お礼

ご報告おくれましたが、本当にありがとうございます!

その他の回答 (1)

  • kt_yuka
  • ベストアンサー率53% (8/15)
回答No.2
bluechart
質問者

お礼

ありがとうございます。一応そのurlは見ていました。

関連するQ&A

専門家に質問してみよう