![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
WEB制作初心者、勉強中のものです。
javascritpのsortメソッドについて質問です。
無名関数を使って偶数と奇数を並び替えるコードについてですが、
下記の場合、function(a,b)の引数a,bには、一体どこの数値が入ってるのでしょうか。
var no=[1,2,3,・・・]の中だと思うのですが、、、、a,bが一体何を指すのが
教えていただけないでしょうか?
// 『sort』の引数として、使い捨ての関数を作成して利用する
var no = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // 配列作成
no.sort(function (a, b) {
// 偶数を前に、奇数を後ろにソートする
if (a % 2 == 0 && b % 2 != 0) return -1;
if (a % 2 != 0 && b % 2 == 0) return 1;
return 0;
});
alert(no); // 『2, 4, 6, 8, 10, 1, 3, 5, 7, 9』と表示
よろしくお願い致します。
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]) で、なかみを かくにんしましょう!
ありがとうござます!なんとなくですが、動きの理解ができたように思います。
cは22ですね。ただ正直、a,bに入る値のルール、またなぜ22回ループするのか疑問が残ったりしてますが、ソートアルゴリズムとして理解するようにします。
ありがとうございます。
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);
こういうのは?
No.2
- 回答日時:
具体的な確認方法はANo.1の通りです。
sortメソッドを自作すれば分かると思いますが
ソートをする為には比較関数(質問のプログラム例では無名関数になっています)を何度か呼び出す必要があります。
(比較回数はソートアルゴリズムなどに依存。)
a,bの値は推測されたとおり、配列内の値ですが、
どの数値かは比較関数が呼び出されるたびに変わります。
ありがとうございます!呼び出す回数、呼び出す数値のロジックまで、、深く捉えようとしておりましたが、ソートアルゴリズムとして概念的に捉えようと思います。割り切らないと、今の私のレベルでは前に進めないですね。。。。。本当に有り難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript 正規表現について質問です。条件に合う場合はtrueを返したい 3 2022/10/06 23:02
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#テキストボックスの文字を配...
-
二次元配列を使って順位をだす...
-
同じIDで定義した要素の配列を...
-
undefinedを表示させない方法は...
-
JavaScriptで簡単なクイズを作...
-
<a>タグのテキストを取得
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
C言語でクロージャを記述する
-
HTTPSのとき":"が"%3A"ではなく...
-
ジェネレーターの作り方
-
翌月を取得するGASが分かりません
-
問題の個数を数える。
-
javascript 特定のタグのidの存...
-
ActiveXobjectが作成できない
-
ボタンをクリックすると数が増...
-
【正規表現】【javascript】CR...
-
compatModeとは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
C#テキストボックスの文字を配...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
二次元配列を使って順位をだす...
-
javascriptで行を抽出したいです。
-
javascriptからphpに配列データ...
-
多次元配列から最大値を1行また...
-
Perlの配列をJavaScriptに渡せ...
-
JSONデータを50音順でソートしたい
-
どうすればresponseText結果を...
-
バナーのランダム表示(複数、...
-
JavaScriptでの動的な多次元配...
-
JavaScriptからPHPに配列を渡す...
-
javascript 省略した記述と思わ...
-
【Google Apps Script】コード...
-
javascriptを用いて作成された...
-
[JS] setAttributeで保存される...
-
javascriptで2つのArrayの...
-
配列について、その要素を並べ...
おすすめ情報