我知道这个问题已经存在了一段时间,但我找不到可以解决我的问题的答案(对不起,如果我错过了)。
无论如何,我有以下代码:
for(let i=0; i<array.length; i++) {
let value = array[i];
let anotherValue = anotherArray.find(val => val.key === value.key);
}
该代码使jshint抛出警告:不要在循环中创建函数。 (W083)
我需要访问“for”范围内的变量这一事实让我需要在其中声明一个函数。
我尝试了以下方法:
let myFunc = (val) => {
//no value here to compare
}
for(let i=0; i<array.length; i++) {
let value = array[i];
let anotherValue = anotherArray.find(myFunc);
}
如果我在之外将其声明为,则无法访问值变量。
答案 0 :(得分:1)
尝试使用Array.forEach
代替for
- 循环:
array.forEach((value) => {
let anotherValue = anotherArray.find(val => val.key === value.key);
/* do anything with anotherValue */
}
或者,你可以curry your function来获取value
并且仍有功能:
let myFunc = candidate => target => candidate.key === target.key;
for (let i = 0; i < array.length; i++) {
let anotherValue = anotherArray.find(myFunc(array[i]));
}
另外,您可以通过在文件顶部添加指令来告诉JSHint忽略此规则中的此规则:
/* jshint loopfunc: true */