Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS Lint错误:Don';t在循环中生成函数-无解决方法_Javascript_Node.js_Reactjs_Jslint - Fatal编程技术网

Javascript JS Lint错误:Don';t在循环中生成函数-无解决方法

Javascript JS Lint错误:Don';t在循环中生成函数-无解决方法,javascript,node.js,reactjs,jslint,Javascript,Node.js,Reactjs,Jslint,我在react JS中有一个小代码片段,其中我试图在对象“categories”中搜索一个值,然后将相应的键值对插入一个新的映射sortedCategories var categoriesToSort = []; //categoriesToSort has some values var sortedCategories = new Map(); for(var j = 0 ; j < categoriesToSort.length ; j++) { categories.fo

我在react JS中有一个小代码片段,其中我试图在对象“categories”中搜索一个值,然后将相应的键值对插入一个新的映射
sortedCategories

var categoriesToSort = []; //categoriesToSort has some values
var sortedCategories = new Map();
for(var j = 0 ; j < categoriesToSort.length ; j++) {
    categories.forEachMap(function(key, value){
       if(categoriesToSort[j] === value) {
          sortedCategories.set(key, value);
       }
    });
}
var分类排序=[]//CategoriesTort有一些值
var sortedCategories=新映射();
对于(var j=0;j
但这给了我以下的lint错误,我没有得到任何解决办法

不要在循环中生成函数


使用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);
       }
    });
});

我看不出有任何理由像这样重构代码是行不通的。基本上,我们将回调函数从循环中取出,并在闭包中使用
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);
}
var分类排序=[]//CategoriesTort有一些值
var sortedCategories=新映射();
var j;
var itter=函数(键、值){
if(分类排序[j]==值){
分类分类。设置(键、值);
}
};
对于(j=0;j
FWIW,这将保留它试图警告的性能相关问题。嘿,谢谢!这很有效。但是,如果我想在forEachMap找到值并在映射中进行设置后,立即跳出它该怎么办。我们怎么能做到呢?@aaggarwal你可以做到:
j=categoriestort.length,或者将循环条件中的另一个变量设置为false以将其中断。要“中断”
forEach
,请使用类似于
some
的内容。已询问此问题。很好的回答。投票结束。