Tengo un selector de fecha de Jquery donde enumero todos los días festivos y muestro el nombre de cada día festivo en una información sobre herramientas durante el efecto de desplazamiento. Pero estoy enfrentando un error, todo funciona normalmente cuando uso un ciclo for para mostrar mi información sobre herramientas, pero cuando trato de usar $.each() mi información sobre herramientas no funciona, aquí está mi código:
$(".datepicker").datepicker({ dateFormat: 'dd/mm/yy', beforeShowDay: function(d) { var dmy = ""; dmy += ("00" + d.getDate()).slice(-2) + "-"; dmy += ("00" + (d.getMonth() + 1)).slice(-2) + "-"; dmy += d.getFullYear(); if ($.inArray(dmy, enableDays) >= 0) { $.each(data, function (index, item) { if(item.date == dmy){ console.log('forEach: ', item) return [true, 'highlight', item.name]; } }) /* for (var i = 0; i < data.length; i++) { if (data[i].date == dmy) { console.log('for: ', data[i]) return [true, 'highlight', data[i].name]; } } */ return [true, '']; } else { return [false, ""]; } } }); Esto es lo que devuelve mi $.each() en la consola con los nombres de las vacaciones, pasó tres veces. 
Y esto es lo que devuelve la consola cuando uso el bucle for:
Para ponerlo simple:
return dentro de un bucle for detendrá la ejecución y saldrá de la función con ese valor devuelto ( [true, 'highlight', item.name] en su caso), que por cierto se espera que la función beforeShowDay regrese con una matriz para que funcione correctamente .
jQuery's $.each (iterable, callback(index[, item])) , iterará sobre todo el conjunto iterable (Array) sin detenerse a menos que use return false; .
La matriz devuelta que está utilizando está encerrada dentro de su propio alcance de callback de llamada, pero no en el alcance de la función externa beforeShowDay . Por lo tanto, verá todos los registros, pero $.each no se detuvo con un retorno que finalmente saldría de la función beforeShowDay . En última instancia, siempre sale con el return [true, ''] Array.
Para que funcione con $.each uso:
let result = [true, ""]; // Default $.each(data, function (index, item) { if (item.date == dmy) { result = [true, 'highlight', item.name]; // Modify it! return false; // Exit $.each loop } }); return result; // Return Default or ModifiedAquí está lo anterior implementado en su ejemplo:
$(".datepicker").datepicker({ dateFormat: 'dd/mm/yy', beforeShowDay: function(d) { var dmy = ""; dmy += ("00" + d.getDate()).slice(-2) + "-"; dmy += ("00" + (d.getMonth() + 1)).slice(-2) + "-"; dmy += d.getFullYear(); if ($.inArray(dmy, enableDays) >= 0) { let result = [true, ""]; // Default $.each(data, function (index, item) { if (item.date == dmy) { result = [true, 'highlight', item.name]; // Modify it! return false; // Exit $.each loop } }); return result; // Return Default or Modified } else { return [false, ""]; } } });