Javascript JS Lint错误:Don';t在循环中生成函数-无解决方法
我在react JS中有一个小代码片段,其中我试图在对象“categories”中搜索一个值,然后将相应的键值对插入一个新的映射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
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调用中的code>,或者将循环条件中的另一个变量设置为false以将其中断。要“中断”forEach
,请使用类似于some
的内容。已询问此问题。很好的回答。投票结束。