を使用してループ内の機能をしないでください。ループ内の機能を加えないでください:jshint - 私はこの質問は、しばらくの間、回避されているが、私は(私はいずれかを逃した場合は申し訳ありません)私の場合を解決できる答えを見つけることができます知っているArray.find
for(let i=0; i<array.length; i++) {
let value = array[i];
let anotherValue = anotherArray.find(val => val.key === value.key);
}
このコードはjshintが警告をスローするようになります:
はとにかく、私は次のコードを持っています。 (W083)
"for"スコープ内にある変数にアクセスする必要があるという事実から、その中に関数が宣言されている必要があります。
私は、次の方法を試してみました:
let myFunc = (val) => {
//no value here to compare
}
for(let i=0; i<array.length; i++) {
let value = array[i];
let anotherValue = anotherArray.find(myFunc);
}
私はため外にそれを宣言した場合、私は値変数にアクセスすることはできません。あなたはvalue
を取ると、まだ機能していすることができるようにするために、代わりに
array.forEach((value) => {
let anotherValue = anotherArray.find(val => val.key === value.key);
/* do anything with anotherValue */
}
curry your functionをすることができます:
let myFunc = candidate => target => candidate.key === target.key;
for (let i = 0; i < array.length; i++) {
let anotherValue = anotherArray.find(myFunc(array[i]));
}
そして、まだ、代わりに
ちょうどその警告メッセージをオフにします。 –
問題はメッセージではありません。それは簡単に取り除くことができます。私はそれがより良い実装でなければならないと考えています。 –
あなたの実装はまったく問題ありません。 –