我在反应JS中有一个小代码片段,其中我试图在对象'类别'中搜索值,然后在新地图O(N * sqrt(N))
中插入相应的键值对。
sortedCategories
但是这给了我以下lint错误,我没有得到任何解决方法。
不要在循环中创建函数
答案 0 :(得分:0)
如何使用forEach而不是for循环?
var categoriesToSort = []; //categoriesToSort has some values
var sortedCategories = new Map();
categoriesToSort.forEach(function (cat) {
categories.forEachMap(function(key, value){
if(cat === value) {
sortedCategories.set(key, value);
}
});
});
答案 1 :(得分:0)
我认为没有任何理由重构您的代码,因为这不起作用。基本上我们将回调函数从循环中取出,并使用j
变量,因为它在闭包中。我已将var j
声明移到回调之上,以使其看起来不错,但从技术上讲,您不需要。
var categoriesToSort = []; //categoriesToSort has some values
var sortedCategories = new Map();
var j;
var itter = function(key, value) {
if(categoriesToSort[j] === value) {
sortedCategories.set(key, value);
}
};
for(j = 0 ; j < categoriesToSort.length ; j++) {
categories.forEachMap(itter);
}