【发布时间】:2011-03-18 04:01:11
【问题描述】:
我正在整理一个我继承的图书馆,并偶然发现了这个小花絮:
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。
这对我来说似乎不是很有效。我一直在玩递归函数,但我并不完全在那里,我不确定我是否走错了路。我不确定用 return false 杀死 $.each 是不是最有效的方法。
有什么想法吗?有小费吗?这种模式在多个地方重复出现,我很想知道如何更好地完成它。
【问题讨论】:
-
与您的问题无关,但
val = val.split("=");并不总是给您正确的值,因为?key=value=abc&key2=123仍然有效。虽然在大多数情况下这可能无关紧要。
标签: javascript jquery recursion nested-loops