我最近添加了 eslint 规则 no-param-reassign
.
但是,当我使用reduce
时要构建一个对象(空对象作为 initialValue
),我发现自己需要在每次回调迭代时修改 accumulator
(回调函数的第一个参数),这会导致 no-param-reassign
linter 投诉(正如人们所期望的那样)。
const newObject = ['a', 'b', 'c'].reduce((result, item, index) => {
result[item] = index; // <-- causes the no-param-reassign complaint
return result;
}, {});
有没有更好的方法来使用 reduce
构建一个不修改 accumulator
参数的对象?
或者我应该在我的 reduce
回调函数中禁用该行的 linting 规则?
最佳答案
我只是将reduce函数包装在lint规则禁用 block 中,即:
/* eslint-disable no-param-reassign */
const newObject = ['a', 'b', 'c'].reduce((result, item, index) => {
result[item] = index;
return result;
}, {});
/* eslint-enable no-param-reassign */
关于javascript - 如何处理 Array.prototype.reduce() 函数中的 eslint no-param-reassign 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41625399/