有更好的方法吗?在多个函数中重用同一个循环
Is there a better way to do this? Reusing the same loop in multiple functions?
这3个函数分别使用相同的循环。
我应该从每个函数中删除循环并将它们放在一个大循环中吗?还有其他更好的方法吗?
function createArrayOfNames(catsArray) {
var catNames = [];
for (var i = 0; i<catsArrayLength; i++) {
catNames.push(cats[i].name);
}
return catNames;
}
//
function createArrayOfListElements(listElement, catNames) {
for(i = 0; i<catsArrayLength; i++) {
var listElements = [];
var listElement = listElement;
listElement.innerHTML = catNames[i]
listElements.append(listElement);
}
return listElements;
}
//Adds cat names to the catList unordered list (inside the catListContainer div)
function addCatListToView(listElements, catNames) {
for(i = 0; i<catsArrayLength; i++) {
getElementById('allCats').append(listElements[i]);
}
}
是的,创建一个迭代函数是使代码更可读的好方法。
function iterateCats(callback) {
for(i = 0; i<catsArrayLength; i++) {
callback(i);
}
}
但正如@scrimp所提到的,如果你不介意让catsArray
可用于所有功能,那么使用forEach
是实现这一目标的标准且更快的方法。
您可以使用Map和forEach来稍微清理代码。另外,请注意,您在每次迭代中都重置了var listElements = [];
。
function createArrayOfNames(catsArray) {
return catsArray.map(function (c) {
return c.name
});
}
function createArrayOfListElements(catNames) {
var listElements = [];
catNames.forEach(function(name) {
var listElement = new listElement();
listElement.innerHTML = name;
listElements.append(listElement);
});
return listElements;
}
function addCatListToView(listElements) {
var catElements = getElementById('allCats');
listElements.forEach(function(element) {
catElements.append(element);
};
}
相关文章:
- Chrome/jQuery未捕获范围错误:超过了最大调用堆栈大小(函数循环)
- 如何在返回值(Js)时不中断函数/循环
- 函数在自己的循环中使用 i,以及一个子函数循环 - var 的行为类似于 let
- 我可以在 jquery 中对函数循环使用相同的返回值吗?
- 如何使用 each() 函数循环访问 JSON 文件
- jQuery函数循环两次
- setInterval 函数循环太快
- 简化我的函数(循环、数组)
- 我的 IF 条件如何影响全局变量使函数循环
- 使用ReactJS和concatJSX语法进行渲染时的map函数循环
- 如何通过OnClick函数循环遍历标记元素并在显示器上获得相应的内容
- 函数循环问题
- 将计数器添加到javascript函数循环中
- 通过future函数循环和设置全局变量
- jQuery创建一个函数循环,每个函数都有一个动画队列
- 从另一个函数终止一个活动的javascript函数/循环
- jQuery函数循环:为什么夏奇拉在陌生人吻她时重复吻
- 在一个简单的函数循环中设置style.display时出现了奇怪的行为
- 通过多个函数循环/setinterval
- 试图防止Jquery函数循环