2017-05-03 5 views
0

Ich weiß, dass diese Frage seit einer Weile existiert, aber ich habe keine Antwort gefunden, die meinen Fall lösen könnte (sorry, wenn ich etwas verpasst habe).jshint - Machen Sie keine Funktionen innerhalb einer Schleife mit Array.find

Auf jeden Fall habe ich den folgenden Code:

for(let i=0; i<array.length; i++) { 
    let value = array[i]; 
    let anotherValue = anotherArray.find(val => val.key === value.key); 
} 

Dieser Code macht jshint die Warnung werfen: Sie innerhalb einer Schleife nicht Funktionen machen. (W083)

Die Tatsache, dass ich auf eine Variable zugreifen muss, die innerhalb des "für" Bereichs liegt, gibt mir die Notwendigkeit, eine Funktion darin deklariert zu haben.

Ich habe den folgenden Ansatz versucht:

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); 
} 

Wenn ich es außerhalb der für erklären kann ich nicht auf den Wert Variable.

+0

Deaktivieren Sie einfach diese Warnmeldung. –

+0

Das Problem ist nicht die Nachricht überhaupt. Das wäre leicht zu beseitigen. Ich denke nur, dass es eine bessere Umsetzung sein muss. –

+1

Ihre Implementierung ist absolut in Ordnung. –

Antwort

1

Versuchen Array.forEach anstelle eines for -loop mit:

array.forEach((value) => { 
    let anotherValue = anotherArray.find(val => val.key === value.key); 
    /* do anything with anotherValue */ 
} 

Alternativ können Sie curry your function um in der Lage zu sein value zu nehmen und haben immer noch eine Funktion:

let myFunc = candidate => target => candidate.key === target.key; 
for (let i = 0; i < array.length; i++) { 
    let anotherValue = anotherArray.find(myFunc(array[i])); 
} 

Und doch alternativ Sie können JSHint anweisen, diese Regel in dieser Datei zu ignorieren, indem Sie oben in der Datei eine Direktive hinzufügen:

/* jshint loopfunc: true */ 
+1

Der Curry-Ansatz erzeugt auch eine Funktion bei jeder Iteration der Schleife. –

+0

Es tut, ich glaube nur nicht, Jshint würde sich darüber beschweren, da der "Funktionsgenerator" außerhalb der Schleife definiert ist. Ich habe das jedoch nicht getestet. –

Verwandte Themen