Je suis novice en JavaScript. J'ai une question
Mon code en Java:
_.each(days, day => {
//TODO something
})
Comment puis-je écrire ce code en JavaScript avec Lodash Mon code en JavaScript: _.each ? Je ne trouve pas de variable comme [i] dans le code JavaScript, donc je ne peux pas vérifier la condition [if (days [i] public void checkArray(int a, int b) {
int[]days = new int[]{5, 15, 25};
int[]hours = new int[]{6, 8, 7};
ArrayList<Interger> result = new ArrayList<>();
for (int i = 0; i < days.length-1; i++) {
if (days[i] < a && b < days[i+1]) {
result.add(hours[i]);
} else if (days[i] > a && days[i] < b) {
result.add(hours[i]);
if (i > 0) {
result.add(hours[i-1]);
}
}
3 Réponses :
De la Documentation Lodash :
Itère des éléments de la collection et appelle iteratee pour chacun élément. L'iteratee est invoqué avec trois arguments: (value, index | clé, collection). Les fonctions Iteratee peuvent quitter l'itération plus tôt renvoyant explicitement false.
_.each obtient une seule collection à itérer comme premier argument, et une fonction "iteratee" pour le deuxième argument.
Donc, pour est une bonne option pour vous.
Cependant , si vous souhaitez toujours utiliser lodash , vous pouvez obtenir aide de _range pour créer un tableau d'indices, et ensuite vous pouvez faire quelque chose comme ça:
(en javascript bien sûr)
let days = [5, 15, 25];
let hours = [6, 8, 7];
let result = [];
_.each(_.range(days.length),function(i)Â {
if (days[i] < a && b < days[i+1]) {
result.push(hours[i]);
} else if (days[i] > a && days[i] < b) {
result.push(hours[i]);
if (i > 0) {
result.push(hours[i-1]);
}
}
});
Vous pouvez utiliser javascript forEach dans le tableau (pas besoin d'utiliser Lodash) et ce sera plus facile dans ReactJS:
var days = [5, 15, 25];
days.forEach((day) => {
//do things with the day
window.alert(day)
});
Désolé mon pote, je dois utiliser Lodash :)
De la documentation de Lodash:
Itère les éléments de la
collectionet invoqueiterateepour chaque élément. Leiterateeest invoqué avec trois arguments:(valeur, index | clé, collection). Les fonctions Iteratee peuvent quitter l'itération plus tôt en renvoyant explicitementfalse.
Cela signifie que vous pouvez simplement faire:
var days = [5, 15, 25];
var hours = [6, 8, 7];
var result = [];
_.each( days, function( day, i ){
if( days[i] < a && b < days[i+1] ){ // days[i] == day
result.push( hours[i] );
} else if( days[i] > a && days[i] < b ){
result.push( hours[i] );
if( i > 0 ){
result.push( hours[i-1] );
}
}
})
Donc tout votre code devient:
_.each( days, function( day, i ){
});
Voici un jsFiddle à tester.
Javascript utilise la même syntaxe
days [i]pour accéder à un membre du tableau. Pour déclarer le tableau, vous utiliseriezconst days = [5, 15, 25];