Архив метки: javascript

JavaScript именованные массивы как набор записей

Обычно для этой цели используют конструкцию Map, однако лично мне  не нравится его синтаксис, когда для доступа необходимо использовать get /set. Поэтому я обычно использую создание объекта. Т.е. получается что-то вроде:

// набор записей
TBokings=new Object();
TBokings={
  x:0,
  x1:0,
  starttime:"12:00",
  endtime:"13:00",
  status:"busy"
};
// сам массив
ArrBooking=new Array();

///добавление в массив
  TBokings.x=startRectX;
  TBokings.x1=EndRectX;
  TBokings.starttime=item.DtFrom_UTC;
  TBokings.endtime=item.DtTo_UTC;
  TBokings.status="busy";
  ArrBooking.push(Object.assign({}, TBokings));      

// перебор массива

ArrBooking.forEach(function(item){
	console.log(item);
});

 

Javascript: конвертация даты и строки в тип Date

Задача: преобразовать строку вида 18.02.2021 10:12 в переменную javascript типа дата.

Решение: создадим универсальный прототип конвертирования для строки:

String.prototype.toDateFromat = function(format){
  var normalized      = this.replace(/[^a-zA-Z0-9]/g, '-');
  var normalizedFormat= format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-');
  var formatItems     = normalizedFormat.split('-');
  var dateItems       = normalized.split('-');

  var monthIndex  = formatItems.indexOf("mm");
  var dayIndex    = formatItems.indexOf("dd");
  var yearIndex   = formatItems.indexOf("yyyy");
  var hourIndex     = formatItems.indexOf("hh");
  var minutesIndex  = formatItems.indexOf("ii");
  var secondsIndex  = formatItems.indexOf("ss");

  var today = new Date();

  var year  = yearIndex>-1  ? dateItems[yearIndex]    : today.getFullYear();
  var month = monthIndex>-1 ? dateItems[monthIndex]-1 : today.getMonth()-1;
  var day   = dayIndex>-1   ? dateItems[dayIndex]     : today.getDate();

  var hour    = hourIndex>-1      ? dateItems[hourIndex]    : today.getHours();
  var minute  = minutesIndex>-1   ? dateItems[minutesIndex] : today.getMinutes();
  var second  = secondsIndex>-1   ? dateItems[secondsIndex] : today.getSeconds();

  return new Date(year,month,day,hour,minute,second);
};
dt="18.02.2021 10:35:00".toDateFromat("dd.mm.yyy hh:ii:ss");

Результат:

JavaScript: Проверка пароля на сложность

Задача: необходимо проверить пароль на сложность по критериям:

  •  есть маленькие буквы
  • есть большие буквы
  • есть специальные символы
  • пароль длиннее 7 символов

Ну в принципе подойдет чтото-вроде:

function PasswordValidTest(pass){
        var count = 0;    
        count += /[a-z]/.test(pass) ? 1 : 0; //есть маленькие буквы
        count += /[A-Z]/.test(pass) ? 1 : 0; //есть большие буквы
        count += /\d/.test(pass) ? 1 : 0;   
        count += /[^\w\d\s]/.test(pass) ? 1 : 0;
        (count>2 & !/[\s]+/.test(pass)) ? res=true:res=false;    
        if ((res==true)&&(pass.length<7)) res=false;
     return res;   
}

Ну и в нагрузку проверка Email:

function EmailValidTest(email){
 var re = /^[\w-\.]+@[\w-]+\.[a-z]{2,4}$/i;   
 return re.test(email);
};
function EmailValidRulesTest(email){
  validmails=['@mail.ru','@yandex.ru','@ya.ru','@list.ru','@inbox.ru','@gmail.com','@icloud.com','@bk.ru'];  
  re=false;  
  validmails.forEach(function(item, i, validmails){
    if (email.indexOf(item)!==-1) re=true;
  });   
  return re;
};

JavaScript: строка в число

На JavaScript в отличие от PHP нет «ленивого» перевода строки в число «одной строчкой». Их нужно чуть больше ;), а именно две:

cur=Number.parseInt("10");
if (Number.isNaN(cur)){cur=0;};
console.log("-а ввели: "+cur);

Зачем? А чтобы закрыть случай, когда строка совсем не число. PHP по умолчанию вернул бы 0, а JavaScript возвращает Nan.

Убираем из URL адресной строки на странице сайта лишнее

Задача: убрать из адресной строки страницы сайта открытой по ссылке из поисковика Яндекса, «лишнюю» информацию, которая идет «прицепом» от яндекса.

Решение:

<script>    
function UrlBrowserYandexCuter(){
   path=document.location.pathname.split("yclid");
   path=path[0];
   search=document.location.search.split("yclid");;
   search=search[0];
   hash=document.location.hash.split("yclid");;
   hash=hash[0];
   url=path+search+hash;
   if (url.slice(-1)=="?"){
    url=url.substring(0, url.length - 1);   
   };
   history.replaceState(null,null, url);
};
UrlBrowserYandexCuter();
</script>