Для получения полного доступа
зарегистрируйтесь.

Артем Леготин    18   4 987


Видимо, пользователь решил о себе ничего не говорить.
  • Москва
  • W-O-S
  • JavaScript, CSS, HTML
  • Зарегистрирован 4 года назад
Профиль завершён на 45 %
45 %

Возвращает линейную функцию f(x), построенную следующим образом:

f(a) = A; f(b) = B;

var linear = function( a, b, A, B, is_ext ) {
	return function( x ) {
		if ( x <= a && is_ext !== true ) {
			return A;
		} else if ( x >= b && is_ext !== true ) {
			return B;
		} else {
			return x * ( B - A ) / ( b - a ) + ( A * b - B * a ) / ( b - a );
		}
	};
};

/*
	По умолчанию, за пределами области определения функция будет возвращать крайние значения, то есть:

	f(x) = A, если x < a;
	f(x) = B, если x > b;

	Однако, если передать параметр is_ext в значении true, f(x) будет экстраполировать значения линейным образом.
*/

var f = linear( -50, 50, 0, 1 );// без экстраполяции

f(-60);// 0
f(-50);// 0
f(0);// 0.5
f(50);// 1
f(100);// 1

var g = linear( 0, 10, 0, 100, true );// c экстраполяцией

g(-5);// -50
g(0);// 0
g(5);// 50
g(10);// 100
g(20);// 200

Склоняет слово в соответствии с числом

var wordCase = function( num, words ) {
	var word = '';
	
	num = Math.abs( num );
    
    if ( num.toString().indexOf( '.' ) > -1 ) {
        word = words[ 2 ];
    } else { 
        word = (
            num % 10 === 1 && num % 100 !== 11 
                ? words[ 1 ]
                : num % 10 >= 2 && num % 10 <= 4 && ( num % 100 < 10 || num % 100 >= 20)  
                    ? words[ 2 ]
                    : words[ 0 ]
        );
    }
    
    return word;
};

/* использование: */

var words = [ 'яблок', 'яблоко', 'яблока' ];// [ 'ноль яблок', 'одно яблоко', 'два яблока' ]

wordCase( 0, words );// яблок
wordCase( 1, words );// яблоко
wordCase( 2, words );// яблока
wordCase( 5, words );// яблок
wordCase( 10, words );// яблок
Сниппет,  JavaScript

Рандом в JS

Генерирует случайное число в заданном диапазоне

var random = function( up, to, is_round ) {
	var value = up + Math.random() * ( to - up );
	
	if ( is_round !== false ) {
		value = Math.round( value );
	}
	
	return value;
};

Перемешивает входящий массив

var shuffle = function( array ) {
	return array.sort( function() {
		return Math.random() - 0.5;
	} );
};

Миксин, реализующий вложенный цикл

.loop(@n: 1, @m: @n, @k: @n * @m) when(@k > 0) {
    .loop(@n, @m, @k - 1);

    @i: `Math.floor((@{k} - 1) / @{m})`;
    @j: @k - @i * @n - 1;

    /*
        @i бежит от 1 до @n,
        @j бежит от 1 до @m,
        @k бежит от 1 до @n * @m

        например:
    */

    &:nth-child(@{k}) {
        top: 50px * @i;
        left: 100px * @j;
    }
}

/* использование: */
.loop(3,4);