• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascritp「sort」メソッドについて)

JavaScriptのsortメソッドについて

このQ&Aのポイント
  • JavaScriptのsortメソッドについて質問です。無名関数を使って偶数と奇数を並び替えるコードについてですが、引数a,bには、一体どこの数値が入ってるのでしょうか。
  • sortメソッドでは、引数として使い捨ての関数を作成して利用します。この関数の引数a,bは、配列の要素同士を比較する際に使用されます。具体的には、sortメソッドが要素のペアを比較するたびに、引数aとbに異なる要素が渡されます。
  • 上記の例では、引数aには配列要素の1つ目の値が、引数bには配列要素の2つ目の値が渡されます。この関数内では、偶数を奇数より前にソートするために、引数aとbの偶奇を判定しています。

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

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

var c = 0; var no = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // 配列作成 no.sort(function (a, b) { alert([a,b]); c++; if (a % 2 == 0 && b % 2 != 0) return -1; if (a % 2 != 0 && b % 2 == 0) return 1; return 0; }); alert (c); -- そもそも、10かいのるーぷで はんべつできるものを・・・ c は、いくつ? とちゅうに alert ([a,b]) で、なかみを かくにんしましょう!

8710car
質問者

お礼

ありがとうござます!なんとなくですが、動きの理解ができたように思います。 cは22ですね。ただ正直、a,bに入る値のルール、またなぜ22回ループするのか疑問が残ったりしてますが、ソートアルゴリズムとして理解するようにします。 ありがとうございます。

その他の回答 (2)

回答No.3

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var b = a.concat(a.reduceRight(function(r,n,i,a){return n%2?a.splice(i,1).concat(r):r},[])); alert (b); var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; for(var i=0,z=a.length,n;i<z;)((n=a[i])%2)?(a.push(n),a.splice(i,1),z--):i++; alert(a); こういうのは?

  • Werner
  • ベストアンサー率53% (395/735)
回答No.2

具体的な確認方法はANo.1の通りです。 sortメソッドを自作すれば分かると思いますが ソートをする為には比較関数(質問のプログラム例では無名関数になっています)を何度か呼び出す必要があります。 (比較回数はソートアルゴリズムなどに依存。) a,bの値は推測されたとおり、配列内の値ですが、 どの数値かは比較関数が呼び出されるたびに変わります。

8710car
質問者

お礼

ありがとうございます!呼び出す回数、呼び出す数値のロジックまで、、深く捉えようとしておりましたが、ソートアルゴリズムとして概念的に捉えようと思います。割り切らないと、今の私のレベルでは前に進めないですね。。。。。本当に有り難うございます。

関連するQ&A

専門家に質問してみよう