私は2つの引数を取る関数を持っているが、例えば、私が欲しいものロジックを持つ配列の配列を扱う関数の例は何でしょうか?
function test(a, b) {
if (a == b) return true;
return false;
};
は、デフォルトでfalse
を返す関数func(arg)
を持つことです。 1つの引数をとり、この引数は配列の配列になります。関数の各インスタンスは、いくつかの動的に生成された数(整数)で開始される、のはmyNumber
それを呼び出すとのそれはこの機能は、次の操作を行う必要があり、0から10までちょうどいくつかのランダムな整数だとしましょうしましょう:
var myNumber = randomIntegerFrom0To10;
var tmp = 0;
test(arg[0][0], arg[1][0]);
test(arg[0][0], arg[1][1]);
test(arg[0][0], arg[1][2]);
...
となどすぐtest(...)
戻りtrue
として、tmp++
を設定し、
test(arg[0][1], arg[1][0]);
test(arg[0][1], arg[1][1]);
test(arg[0][1], arg[1][2]);
....
に行くとすぐtest(...)
戻りtrue
として、tmp++
を設定し、
test(arg[0][2], arg[1][0]);
test(arg[0][2], arg[1][1]);
test(arg[0][2], arg[1][2]);
...
...というように、
test(arg[0][arg[0].length-1], arg[1][0]);
test(arg[0][arg[0].length-1], arg[1][1]);
test(arg[0][arg[0].length-1], arg[1][2]);
...
まで - いつものように、できるだけ早くtest(...)
戻りtrue
として、tmp++
を設定しますが、tmp
はmyNumber
と等しい場合test(arg[0][arg[0].length-1], arg[1][arg[1].length-1])
た後、我々はチェックしなければなりません。はいの場合、関数はtrue
を返して停止する必要があります。ない場合は、我々は(我々は常にmyNumber
とそれぞれ比較した後tmp = 0
を設定することに注意してください)続けなければならない:
tmp = 0;
test(arg[0][0], arg[2][0]);
test(arg[0][0], arg[2][1]);
test(arg[0][0], arg[2][2]);
...
とすぐtest(...)
として戻っtrue
は、tmp++
設定...というように。我々はtmp
がmyNumber
に等しいことを見たことがない場合は、我々は最終的には、上記のロジックを継続
test(arg[0][0], arg[arg.length-1][0]);
test(arg[0][0], arg[arg.length-1][1]);
test(arg[0][0], arg[arg.length-1][2]);
に来ます。ここで最長の方法は
test(arg[0][(arg[0].length-1)], arg[arg.length-1][(arg[arg.length-1].length-1)]);
に行き、現在のtmp
を調べることです。それはmyNumber
に等しい場合、関数はtrue
を返して終了するが、そうでなければ、我々は継続しなければならない必要があります。
tmp = 0;
test(arg[1][0], arg[2][0]);
test(arg[1][0], arg[2][1]);
test(arg[1][0], arg[2][2]);
...
...
test(arg[1][(arg[1].length-1)], arg[arg.length-1][(arg[arg.length-1].length-1)]);
まで継続し、現在tmp
を確認してください。その上
tmp = 0;
test(arg[2][0], arg[2][0]);
test(arg[2][0], arg[2][1]);
test(arg[2][0], arg[2][2]);
を...と:true
を返すか、または継続のどちらか、いつものように。最長の理論的に可能な方法は、現在のtmp
がmyNumber
に等しい場合、true
を返し、
test(arg[arg.length-2][(arg[arg.length-2].length-1)],
arg[arg.length-1][(arg[arg.length-1].length-1)]);
に行くとすることであろう。それ以外の場合は、false
を返し、最後に停止します。
例:私たちはこのような入力があった場合
var myNumber = 1;
var tmp = 0;
var input1 = [ [ 4, 5 ],
[ 3, 2, 8, 7, 1, 10 ],
[ 9, 4, 8, 50 ],
[ 10, 20, 30]
];
// 4 !== 3; tmp == 0;
// 4 !== 2; tmp == 0;
// 4 !== 8; tmp == 0;
// ...4 !== 10 ; tmp == 0;
// 5 !== 3 ; tmp == 0;
// 5 !== 2 ; tmp == 0;
// ...5 !== 10 ; tmp == 0; is the current tmp equal to myNumber? No. So, continue:
// 3 !== 9 ; tmp == 0;
// 3 !== 4 ; tmp == 0;
// 3 !== 8 ; tmp == 0;
// 3 !== 50 ; tmp == 0;
// 2 !== 9 ; tmp == 0;
// ...2 !== 50 ; tmp == 0;
// 8 !== 9 ; tmp == 0;
// 8 !== 4 ; tmp == 0;
// test(8,8) returns true; set tmp++ and, since there is no need for test(8,50), go to
// 7 !== 9 ; tmp == 1;
// ...7 !== 50 ; tmp == 1;
// 1 !== 9 ; tmp == 1;
// ...10 !== 50; tmp == 1; is the current tmp equal to myNumber? Yes.
// So, return true and stop.
は:
var input2 = [ [ 1, 2 ],
[ 3, 4, 5, 6, 7, 8 ],
[ 9, 10, 11, 12 ],
[ 13, 14, 15]
];
を、我々は「テスト」の操作の可能な最大量を実行し、test(12,15
後false
を返さなければならないでしょう)。
問題は、上記のロジックに従って、与えられた2つの入力例について記述されたアクションを実行するような、どのような作業関数の例でしょうか:267149とfunc(input2)
?
ご質問はありますか?ところで、 'if(a == b)がtrueを返します。 return false; 'は' return a == b; 'と書くのと全く同じです。 –
質問とそのタイトルを編集し、質問自体を追加しました。私はそのような機能の例を必要としているだけです。 –