[解決済み] Javascriptの.filter()メソッドでコールバック関数に追加パラメータを渡すにはどうすればよいですか?
2022-08-31 23:01:03
質問
配列の各文字列を、指定された文字列と比較したい。私の現在の実装は、次のとおりです。
function startsWith(element) {
return element.indexOf(wordToCompare) === 0;
}
addressBook.filter(startsWith);
この単純な関数が動作するのは、今現在は という単語を比較するためです。 がグローバル変数として設定されているからです。もちろん、これを回避してパラメータとして渡したいのです。問題なのは startsWith() を定義して、それが1つの追加パラメータを受け入れるようにする方法がわからないということです。なぜなら、それが受け取るデフォルトのパラメータがどのように渡されるかがよくわからないからです。私は、私が考えることができるすべての異なる方法を試してみましたが、それらのどれも動作しません。
組み込みの」コールバック関数 (申し訳ありませんが、これらのためのより良い用語を知りません) に渡されたパラメータがどのように動作するかを説明できれば、それは素晴らしいことです。
どのように解決するのですか?
作る
startsWith
は比較する単語を受け入れるようにし
関数を返す
を返し、それがフィルタ/コールバック関数として使われます。
function startsWith(wordToCompare) {
return function(element) {
return element.indexOf(wordToCompare) === 0;
}
}
addressBook.filter(startsWith(wordToCompare));
もう一つの方法として
Function.prototype.bind
[MDN]
(ECMAScript5をサポートするブラウザでのみ利用可能。古いブラウザ用のシムはリンクを参照) と、第一引数を "fix" とします。
function startsWith(wordToCompare, element) {
return element.indexOf(wordToCompare) === 0;
}
addressBook.filter(startsWith.bind(this, wordToCompare));
デフォルトのパラメータがどのように渡されるのかがよくわかりません。
特別なことは何もありません。ある時点で
filter
はコールバックを呼び出して配列の現在の要素を渡しているだけです。つまり、これは関数が別の関数、この場合は引数として渡したコールバックを呼び出すということです。
似たような関数の例です。
function filter(array, callback) {
var result = [];
for(var i = 0, l = array.length; i < l; i++) {
if(callback(array[i])) { // here callback is called with the current element
result.push(array[i]);
}
}
return result;
}
関連
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] オブジェクトをメンバーとして、プレーンなJavaScriptオブジェクトをループさせる方法
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み] setTimeout()コールバックにパラメータを渡すにはどうすればよいですか?
-
[解決済み] JavaScriptの関数をパラメータとして渡す
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] javascriptでオプションのパラメータを扱う