我不能让周围JSHint的错误消息。 下面是我使用的循环:
for (i = 0; i < Collection.length; i += 4) {
data.push({
items : Collection.slice(i, i + 4).map(function(item) {
return {
id: item[0],
title: item[1],
};
})
});
}
你可以只移动功能外循环和传递的引用来map
:
function mapCallback(item) {
return {
id : item[0],
title : item[1],
};
}
for (i = 0; i < Collection.length; i += 4) {
data.push({
items: Collection.slice(i, i + 4).map(mapCallback)
});
}
另外,您也可以使用JSHint指令忽略循环中的函数表达式。 只要把这个在有关文件的顶部:
/*jshint loopfunc: true */
声明在一个循环的功能是凌乱的,并有可能容易出错。 取而代之的是,该功能一次,然后进入循环。
var objMaker = function(item) {
return {
id : item[0],
title : item[1],
};
};
for (i = 0; i < Collection.length; i += 4) {
data.push({
items : Collection.slice(i, i + 4).map(objMaker)
});
}
有人说“声明在一个循环的功能是凌乱和容易出错的”,但在循环中功能的直接什么指示中,例如, Array.prototype.forEach方法。 仅仅因为这个词“功能”理论上应该意味着重新定义它在每一个的forEach调用它并不意味着它实际上是由JavaScript引擎每次定义 。
这同样适用于外循环,因为发动机有指令“懒”的处理。 他们不打算再重新定义了整个的forEach / 地图 /等构建指令,如果没有真正的改变它,他们将只给新的论据吧。
这毫无头绪这么简单的事情,以及代码方面的古JS引擎的时代早已过去。 然而,我们正在这个古老的警告功能时尚未能够作为参数在的forEach或地图的情况下传递其被设想。