Условное выполнение

вместо if(success) obj.start(); else obj.stop();

obj[success?’start’:’stop’]();

или success?obj.start():obj.stop();

Подстановки в шаблоне

text = text.split(‘{‘ + i + ‘}’).join(replacements[i])

Генерирование случайных строчек

s+=String.fromCharCode(Math.floor(26+Math.random()*50)); в цикле.

Можно гораздо проще:

Math.random().toString(33).substr(2); — в методе Number.toString параметр означает основание системы счисления.

Генерирование битовых масок

(123).toString(2) // 111011

Битовая маска в массиве: (123).toString(2).split(»).reverse().map(function(item) { return +item; });

Что быстрее — проверять равенство строчек или boolean?

http://jsperf.com/string-vs-bool-equals

строчки быстрее, но всего на 20%. Когда удобнее — можно ограничится строчками вместо булевского флага.

Что быстрее — конкатенация строк или join?

http://jsperf.com/catethysis-concat/2

конкатенация гораздо быстрее, однако join хардкод-символов не сильно медленнее. Хотя их проще сразу упаковать в строчку.

Уловки map

([‘1′, ‘2’, ‘3’]).map(parseInt) // [1, NaN, NaN]

([1, 2, 3]).map(toString) // [undefined, undefined, undefined]

Map передаёт три параметра (item, index, list), а parseInt и toString вторым параметром принимают основание системы счисления.

Сгруппировать слова из одинаковых букв

var in_words=['абв', 'днш', 'вба'];

var sorted_words=[];
in_words.forEach(function(item, index) {
	sorted_words.push(item.split('').sort().join(''));
});

console.log(sorted_words); // ['абв', 'днш', 'абв']

var hash={};
for(var i in sorted_words) hash[sorted_words[i]]=1;
var unique_words=Object.keys(hash); // ['абв', 'днш']

var out_words=[];

for(var i in unique_words) {
	var out_word=[];
	for(var j in sorted_words)
		if(unique_words[i]==sorted_words[j])
			out_word.push(in_words[j]);
	out_words.push(out_word);
}

console.log(out_words);

Двоичный хеш

Для объединения большого количества массивов с элементами из небольшого списка удобнее не объединять в цикле массивы, а заранее назначить двоичный хеш каждому массиву, и объединять хеши побитовым И. Хеш из простых чисел не работает, поскольку содержит неоднозначные соответствия хеш<->массив.

JSperf.com

Очень удобен для выбора оптимальной реализации алгоритма.

Удаление дубликатов

var hash={};
for(var i in arr) hash[arr[i]]=1;
var unique_arr=Object.keys(hash);