Сегодня я решил оставить заметку с несколькими полезными функциями, которые могу пригодится Вам при написании кода на JavaScript.
Первая функция о которой пойдет речь — парсинг значения в bool тип.
/* @param value - что парсим
* @param undefinedReturn - значение если value не определено
* @return true или false
*/
var ParseBoolean = function (value, undefinedReturn) {
undefinedReturn = undefinedReturn || false;
if (value == undefined) { return undefinedReturn; }
else if (value == null) { return false; }
else if (typeof (value) == 'string') { return value == 'true'; }
else if (typeof (value) == 'number') { return value > 0; }
else if (typeof (value) == 'function' || typeof (value) == 'object') { return true; }
else { return value }
}
Вторая полезная функция парсинг строки в формате год-месяц-день[ час:минута:секунда] в объект date. Почему выбран именно такой формат входной строки? Прост =) На самом деле это один из стандартов, который принимается практически в любом языке программирования.
var ParseDateTime = function (dateString) {
var parts = dateString.trim().split(' ');
if (parts.length != 2) {
if (parts.length == 1) {
parts[1] = '00:00:00';
} else {
return null;
}
}
var date = parts[0].split('-'), time = parts[1].split(':');
if (date.length != 3 || time.length != 3) {
return null;
}
return new Date(date[0], date[1] - 1, date[2], time[0], time[1], time[2]);
}
Еще одна полезная функция — генерация случайного числа из диапазона a, b.
var Random = function (minimum, maximim) {
return Math.floor(Math.random() * (maximim - minimum + 1) + minimum);
}
Так же бывает полезна функция подсчета логарифма числа n по основанию a.
var Log = function (n, a) {
return Math.log(n) / Math.log(a);
}
А теперь функция обратная ParseDateTime для перевода объекта date в строку.
var ToLength = function (value, neededLength, prefix, suffix) {
prefix = prefix || false;
suffix = suffix || false;
if (!suffix && !prefix) {
return value;
}
value = value.toString();
while (value.length < neededLength) {
if (prefix) { value = prefix + value; }
if (suffix) { value += suffix; }
}
return value;
}
var DateFormat = function (date, format) {
var fullYear = date.getFullYear(),
year = ToLength(date.getYear(), 2, "0"),
month = ToLength(date.getMonth() + 1, 2, "0"),
day = ToLength(date.getDate(), 2, "0"),
hour = ToLength(date.getHours(), 2, "0"),
minutes = ToLength(date.getMinutes(), 2, "0"),
seconds = ToLength(date.getSeconds(), 2, "0");
switch (format) {
case 'yyyy-MM-dd':
return fullYear + "-" + month + "-" + day;
case 'yyyy-MM-dd HH:mm:ss':
default:
return fullYear + "-" + month + "-" + day + " " + hour + ":" + minutes + ":" + seconds;
}
}