私は関数を入力として受け取り、その関数がまだ配列に追加されていない場合、APIの内部で、その関数を配列に追加します。Javascriptの関数を比較する
APIへの呼び出しの形式は次のとおりです。
myApiHandle.addIfUnique(function(){
myResource.get(myObj);
});
APIは以下のとおりです。
myApiHandle.addIfUnique(myFunc) {
if (myArray.indexOf(myFunc) === -1) {
return;
}
// add to array
}
予想通りたびに新しい機能が渡されているので、今これは明らかに、動作しません。
私の質問です:myApiHandle.addIfUnique呼び出しに関数を渡す方法があります。これは、配列内の既存の関数をこの関数と比較することができます。現在は渡されていますか?比較では関数名とオブジェクトを比較し、両方が同じ場合は関数を配列に追加しないでください。可能であれば、addIfUnique呼び出しに別の引数を追加することは避けたい。もしそうなら
myApiCall.addIfUnique (someFunc) {
}
、someFuncです:つまり
は、可能下回っています。そして、関数がすでにmyArrayに存在するかどうかを検出するためのAPI内部のロジックは何ですか?
indexOfで行っているような機能があるかどうかだけを確認できます。しかし、同じ関数を何度も作成しないようにaddIfUniqueを呼び出すコードを更新することができます。 –
これは基本的にやってみると悪いことです。あなたの問題を別の方法で解決してください。 2つの異なる関数が実際に同じか異なっているかどうかを判断する方法はありません。確かに、もしそれらが全く同じコードを持っていれば、同じ結果を生み出しますが、それらが異なるコードを持っていれば、異なる結果を生むということではありません。私はあなたがそれらを比較したい場合は、毎回新たに作成されたローカル関数を渡すのを止めると言うでしょう。 – jfriend00
私は同意します。あなたが解決しようとしている問題は何ですか? –