Как обрабатывать правило eslint no-param-reassign в массиве.прототип.функция reduce() функции
недавно я добавил правило eslint no-param-reassign
.
однако, когда я использую reduce
построить объект (пустой объект как initialValue
), мне нужно изменить accumulator
(первый аргумент функции обратного вызова) на каждой итерации обратного вызова, которая вызывает no-param-reassign
жалоба линтера (как и следовало ожидать).
const newObject = ['a', 'b', 'c'].reduce((result, item, index) => {
result[item] = index; // <-- causes the no-param-reassign complaint
return result;
}, {});
есть ли лучший способ построить объект с помощью reduce
это не изменить accumulator
спор?
или я должен просто отключить правило пылеобразования на эту строчку в моем reduce
функции обратного вызова?
2 ответов
Я возвращаюсь к этому вопросу, чтобы опубликовать новый ответ, который, наконец, пришел мне в голову, используя оператор распространения объектов)...
const newObject = ['a', 'b', 'c'].reduce((result, item, index) => ({
...result,
[item]: index,
}), {});
Ну, вы могли бы сделать (result, item) => Object.assign({}, result, {[item]: whatever})
создать новый объект на каждой итерации :-)
Если вы хотите обмануть Линтер, вы можете использовать => Object.assign(result, {[item]: whatever})
(который делает то же самое, что и ваш текущий код, но без явного назначения), Но да, я думаю, вы должны просто отключить это правило.