Доброго времени суток читающему.
Написал функцию, функция работает, но выглядит сложновато. А где сложно там и ошибки, и лишний код очень и очень часто встречаются. Итак, форумчане, прошу конструктивной критики
function insertIntoGet(key, value) {
var res = '?';
if (location.search.length > 0) {
var search = location.search.substr(1);
var arSearch = search.split('&');
var isHaveKey = false;
arSearch.forEach(function (el, i, arr) {
var arEl = el.split('=');
if (arEl[0] == key) {
arEl[1] = value;
el = (value != "") ? arEl.join('=') : "";
arr[i] = el;
isHaveKey = true;
}
});
res += arSearch.join('&') + (!isHaveKey ? "&" + key + "=" + value : "");
if (res == "?") res = "";
} else {
res += key + "=" + value;
}
return encodeURI(location.origin + location.pathname + res + location.hash);
}