Я создаю библиотеку, которую я унаследовал, и наткнулся на этот маленький кусочек:
queries = urlParams.query.split("&");
// Split URL Queries
$.each(queries, function (i, val) {
val = val.split("=");
args[val[0]] = val[1]; //Assign query args into args object using their name (ie: test=123) as the key
});
// Loop through arguments
$.each(args, function (i, val) {
// Loop through affiliates to compare url arguments against those of the affiliates
$.each(self.affiliates, function (inc, value) {
if (value.urlTag === i) {
self.setAffiliateCookies(i, val, 1); //Set affiliate cookies
gotAff = true;
return false;
}
});
});
Суть того, что происходит выше, заключается в том, что она анализирует строку запроса и разбивает элементы на значение ключапар.Достаточно просто.
Что происходит после этого, так это то, что он перебирает этот новый массив и затем проверяет, существует ли значение args
в литеральном значении объекта self.affiliates.urlTag
.Если это так, он устанавливает cookie, устанавливает gotAff
в true, а затем возвращает false, чтобы убить $.each
.
Что-то в этом не кажется мне эффективным.Я играл с рекурсивной функцией, и я не совсем там, и я не уверен, что я иду по неверному пути.Я не уверен, что убийство $.each
с возвращением false также является наиболее эффективным методом.
Есть мысли?Какие-нибудь советы?Такая схема повторяется в нескольких местах, и мне бы хотелось узнать, как лучше ее выполнить.