配列と別の関数を入力とする関数を記述しようとしています。私は供給機能について知っている唯一のことは、しかし、それはどちらか関数が配列または単一値の入力を受け取るかどうかを調べる
は、単一の数の引数を取り、新しい番号または
数字の配列を受け取りを返し、数字の新しい配列を返すことです。私の機能で
、私はそれがArray.prototype.map()
付属の関数を呼び出すかどうかを決定するために第一又は第二のケースだかどうかを確認したいです。
したがって、これらの二つの機能を持つ...
var unknownFunction = function(unknownInput) {
//Does stuff with input
//returns number or array of numbers...
return someValueOrValues
}
と
var mainFunction = function(anArray, preFunction){
// SOME CODE TO CHECK IF ARG NEEDS TO BE NUMBER OR ARRAY
// ...
// ...
**ANSWER WOULD FIT HERE**
if(argIsNumber === true){
// function takes NUMBER
anArray = anArray.map(preFunction)
}else{
// function takes ARRAY
anArray = preFunction(anArray)
}
// DO STUFF WITH ARRAY AFTER USER FUNCTION HAS MADE IT'S MODIFICATIONS
// ...
// ...
// ...
return anArray;
}
それを呼び出すために最善の方法を把握するために最初の関数の内部で突くする方法はありますか?
try/catchに入れることができます。配列にアクセスしようとすると数字だけでエラーが発生します。 – durbnpoisn
これはできません。関数が関数を実行しないで配列や数値を受け入れるかどうかを(一般的に)知ることはできません。これは[Halting Problem](https://en.wikipedia.org/wiki/Halting_problem)のサブクラスであり、解決策はありません。 – meagar
@meagarは正しいですが、Function.prototype.toStringを使用すると、ほとんどのブラウザで関数のソースコードとパラメータ名のいくつかの規則が返されます。最初のパラメータの名前がarrayであるが、偽のprofではないが動作するかもしれない場合 – csharpfolk