0
オブジェクトの配列を反復処理し、メソッドを呼び出したいとします。そのメソッドの結果が何らかの条件を満たす場合。私はすぐにその結果を返したい。私はこれを書いた:Lodash、ループ内で関数を呼び出し、最初に一致する結果を返します。
public getFirstMatch(value: string, allValues: string[]): Result {
let foundResult = undefined;
_.find(this.myArrayofMatchers, matcher => {
let result = matcher.isMatch(value, allValues);
if(result.isMatch){
foundResult = result;
return true;
}
})
return foundResult || new Result(false);
}
それは動作しますが、それはclunkyと不明なようです。 _.find
、imhoは実際のmatcher
を気にしないので、私がやろうとしていることの明確な指標ではありません。事実foundResult
が存在する必要があるのは、私がかなり醜いと感じるものです。そして、それは長くなる必要があるようです。 ここでもっとうまくいくものはありますか?これにはより良いlodash関数がありますか?
はなお、ここであなたが_.foreach
よう_.find
を使用しているループ
public isMatch(value: string, allValues: string[]): Result {
for (let i = 0; i < this.myArrayofMatchers.length; i++){
let result = this.myArrayofMatchers[i].isMatch(value, allValues);
if (result.isMatch) {
return result;
}
}
return new Result(false);
}
は(_myArrrayのVARマッチャ)のために ''作業していますか? – georg
@georg foreachを意味しますか?私はロダッシュの使用がより良い習慣であると聞きました。私は効率について懸念しています(私は、愚かな言語の選択を知っています)。 'for(let i = 0; i
いいえ、あなたの2番目のスニペットとまったく同じように動作する 'for..of'ループを意味します。通常の言語構造が動作する場合、ライブラリを使用する必要はありません。 – georg