Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
this.find = function(name) {
var objs = this.objects;
for(var i = 0; i < objs.length; ++i) {
var o = objs[i];
if (o.name == name)
return o;
}
return null;
}
// если немного переписать
this.find = function(name) {
for(var i = 0, o; o = this.objects[i++];) {
if (o.name == name)
return o;
}
}
// дает 81 байт вместо 112 (+31 байт экономии)
this.toString = function() {
var c = {};
var l = this.objects;
if (!l.length)
return "nothing";
for(var i = 0; i < l.length; ++i) {
var name = l[i].name;
if (!c[name])
c[name] = 1;
else
++c[name];
}
var r = "";
for(var i in c) {
var n = c[i];
r += i;
if (n > 1)
r += "*" + n;
r += ", ";
}
r = r.slice(0, -2);
return r;
}
// переписываем
this.toString = function(){
var c = {};
for(var i = 0, obj, n; obj = this.objects[i]; ++i){
n = obj.name;
c[n] = ++c[n] || 1;
}
var res = [];
for (var i in c){
res.push(c[i] > 1 ? i + '*' + c[i] : i);
}
return res.join(', ') || 'nothing';
}
// получаем 167 байт вместо 218 ( +51 байт экономии)
// вместо
if (object == null)
{
...
}
// писать
if (object)
{
}
Исходный код игры «Fontanero», победителя конкурса 10k apart