JS Lint错误:不要在循环中创建函数 - 没有解决方法

时间:2016-05-31 03:39:16

标签: javascript node.js reactjs jslint

我在反应JS中有一个小代码片段,其中我试图在对象'类别'中搜索值,然后在新地图O(N * sqrt(N))中插入相应的键值对。

sortedCategories

但是这给了我以下lint错误,我没有得到任何解决方法。

  

不要在循环中创建函数

2 个答案:

答案 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);
}