我正在根据另一个数组中的项目数量生成对象数组。很简单,我正在执行以下操作,效果很好。
for(let i in myArray){
newArray.push({
var1: someFunctionValue(),
var2: anotherFunctionValue()
});
}
但是,由于未使用“ i”,React(ESLint?)给我警告“ i”已分配一个值,但从未使用-没有未使用的变量。
我应该有更好的方法吗?我真的看不到一种在不产生此错误的情况下实现我想要的方法的方法。
答案 0 :(得分:4)
您在数组上使用for-in循环,而不使用可枚举的键(索引)。您应该改用Array#forEach
,由于它接受回调,因此您可以省略任何参数:
myArray.forEach(() => { // No callback args
newArray.push({
var1: someFunctionValue(),
var2: anotherFunctionValue()
});
});
此外,现在我正在读取您的变量名,似乎您正在尝试执行映射操作,例如对于myArray
中的每个元素,您都想要newArray
中的一个新元素与每个索引相关联。如果是这种情况,更好的方法是Array#map
myArray
:
const newArray = myArray.map(() => ({
var1: someFunctionValue(),
var2: anotherFunctionValue(),
}));
不需要任何中介,而且简洁明了。
答案 1 :(得分:2)
您可以改用forEach
,不需要变量:
myArray.forEach(() => {
newArray.push({
var1: someFunctionValue(),
var2: anotherFunctionValue()
});
});
答案 2 :(得分:1)
基于this answer。您也可以尝试在循环外声明变量。
对于我的用例,我需要一个break
语句,以便forEach()
对我不起作用。
let i = null;
for(i in myArray){
if (i==='fooBar') {
break;
}
else {
newArray.push({
var1: someFunctionValue(i),
var2: anotherFunctionValue()
});
}
}