Je ne peux pas contourner le message d'erreur de JSHint. Voici la boucle que j'utilise:
for (i = 0; i < Collection.length; i += 4) {
data.Push({
items : Collection.slice(i, i + 4).map(function(item) {
return {
id: item[0],
title: item[1],
};
})
});
}
Vous pouvez simplement déplacer la fonction en dehors de la boucle et lui donner une référence à map
:
function mapCallback(item) {
return {
id : item[0],
title : item[1],
};
}
for (i = 0; i < Collection.length; i += 4) {
data.Push({
items: Collection.slice(i, i + 4).map(mapCallback)
});
}
Vous pouvez également utiliser une directive JSHint pour ignorer les expressions de fonction dans les boucles. Il suffit de mettre ceci en haut du fichier en question:
/*jshint loopfunc: true */
Déclarer une fonction dans une boucle est compliqué et potentiellement sujet aux erreurs. Au lieu de cela, définissez la fonction une fois, puis entrez la boucle.
var objMaker = function(item) {
return {
id : item[0],
title : item[1],
};
};
for (i = 0; i < Collection.length; i += 4) {
data.Push({
items : Collection.slice(i, i + 4).map(objMaker)
});
}