интересные картинки, только у меня подозрение, что там прокси порезал файлик... Хорошо бы, чтобы еще кто-нибудь подтвердил баги, ибо у меня хорошо смотрится.
Смотрю из другой сетки, безо всяких прокси — результат тот же. Есть у меня ощущение, что IE спотыкается на пережатом и переполненном Base64 файле. Сейчас попробую понять на каком именно месте…
"Помимо того, что оно на 10 строчек короче"
Функция, конечно, короче, но непонятна без хорошего комментария. Гнаться надо не за минимальность кода, а за его понятность.
Кстати, быстрее она только в IE (чуть-чуть), в FF(2,3), Opera(9) и Safari(3) быстрее работает функа, работающая через split.
В мое время гнаться нужно было за скоростью.. ) А сейчас, я думаю, за некой золотой серединой между скоростью и читабельностью, хотя второе часто идет в качестве бонуса к первому. :)
Маленько добавление:
если в регулярное выражение после символа "=" добавить квантификатор "?": /([^=&]+)=?([^&]*)/g, то функция будет обрабатывать не только "foo=1&blah=a&bar=", но и "foo=1&blah=a&bar".
Что нужно сделать, чтобы для пустых параметров в выходной строке не добавлялся знак равенства, догадаетесь сами =)
PS: И чего он так от массивов бежал?
function compress(data){
var q = [], ret = "";
data.replace(/([^=&]+)=?([^&]*)/g, function(m, key, value){
if (!q[key]) q[key] = [];
q[key].push(value);
});
for ( var key in q ) {
ret += "&" + key + "=" + q[key].join(",");
}
return ret.replace(/^&/, "");
};
Ну че за фигня, почему я в каментах не могу даже code-тег исопльзовать?
К тому, что написано "дядей" Джоном, бесполезно что-либо добавлять. Надо переделывать, причем с нуля. Проверьте свою "добавленную" функцию (а также оригинал) на такой строке параметров, выполнив скрипт в Firefox: 'watch=1&watch=2'
Кстати, и тут не все так прекрасно в датском королевстве.
split, вроде как, не поддерживается в safari:
источник: http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28ECMAScript%29#String_object
Писать, что фича, объявленная еще в ECMAScript первой версии (1997 г.), не работает в современном браузере, претендующим на звание одного из лучших - это нечно, вроде провокации. ;)
Странноватый источник, кстати...
Поиск без замены, или массивы без массивов