我使用以下代码正在运行,我想知道是否有办法使用lodash或其他lib简化它? 我正在获得带有值的数组并逐行添加它,这只是开始:)所以我想知道JS中是否有更好的方法
_add: function(url, oConfig, CacheParameters, aDest,
bParameters, aReus) {
for (var i = 0; CacheParameters && i < CacheParameters.length; i++) {
url.addSearch(CacheParameters[i].name, CacheParameters[i].value);
}
for (i = 0; aDest && i < aDest.length; i++) {
url.addSearch(aDest[i].name, aDest[i].value);
}
for (i = 0; bParameters && i < bParameters.length; i++) {
url.addSearch(bParameters[i].name, bParameters[i].value);
}
for (i = 0; aReus && i < aReus.length; i++) {
url.addSearch(aReus[i].name, aReus[i].value);
}
for (i = 0; oConfig.bParameters && i < oConfig.bParameters.length; i++) {
var oParam = oConfig.bParameters[i];
url.addSearch(oParam.paramName, oParam.paramValue);
}
return url;
},
答案 0 :(得分:0)
我没有对此进行过测试,但有些内容应该可行。你不需要lodash这种方法。基本上你正在做的是迭代一个数组并将其两个属性传递给url.addSearch
。因此,我们可以编写一个接受数组和两个字段的函数:
_add: function(url, oConfig, CacheParameters, aDest, bParameters, aReus) {
function addSearchToUrl(arr, field1, field2) {
arr.forEach(function (item) {
url.addSearch(item[field1], item[field2]);
});
}
addSearchToUrl(CacheParameters, 'name', 'value');
addSearchToUrl(aDest, 'name', 'value');
addSearchToUrl(bParameters, 'name', 'value');
addSearchToUrl(aReus, 'name', 'value');
addSearchToUrl(oConfig.bParameters, 'paramName', 'paramValue');
}