Skip to content

Instantly share code, notes, and snippets.

View shchegol's full-sized avatar
😄
Try to update my personal page

Alexander shchegol

😄
Try to update my personal page
View GitHub Profile
Binary search
Stack
Queue
Singly linked list
https://github.com/trekhleb/javascript-algorithms/blob/master/src/data-structures
@shchegol
shchegol / getType
Last active June 25, 2020 13:06
Generic type-checking
// from https://blog.logrocket.com/javascript-typeof-2511d53a1a62
function getType(value) {
var regex = /^\[object (\S+?)\]$/;
var matches = Object.prototype.toString.call(value).match(regex) || [];
return (matches[1] || 'undefined').toLowerCase();
}
console.log(type('')); // "string"
@shchegol
shchegol / isArray
Created April 25, 2019 14:37
Checking for arrays
// from https://medium.com/devschacht/javascripts-new-private-class-fields-c60daffe361b
// METHOD 1: constructor property
// Not reliable
function isArray(value) {
return typeof value == 'object' && value.constructor === Array;
}
// METHOD 2: instanceof
// Not reliable since an object's prototype can be changed
@shchegol
shchegol / !Design Patterns
Last active March 16, 2021 14:49
Design Patterns
Module
Branching - чтобы не вызывать каждый раз проверки каких-то параметров.
Cuггying
Memoization
Namespace
Private - приватные свойства в конструкторе
Self-exiting object - Для защиты глобального пространства имён
Object iterate
Object clone
Is object empty?
@shchegol
shchegol / !Sorts
Last active June 25, 2020 13:01
Some example of sort
bubble
cocktail
@shchegol
shchegol / outsideClick.js
Last active December 20, 2018 10:46 — forked from everdimension/outside_click.js
Listener for clicks outside the element, for example, for closing menus on outside click.
var el = document.getElementById('el');
document.addEventListener('click', outsideEvtListener);
function outsideEvtListener(evt) {
if (evt.target === el || el.contains(evt.target)) {
return;
}
// code handling outside click
@shchegol
shchegol / declOfNum.js
Last active December 20, 2018 10:47 — forked from realmyst/gist:1262561
Склонение числительных в javascript
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
use:
declOfNum(count, ['найдена', 'найдено', 'найдены']);