Я использую vue-cli и принял правила по умолчанию ESLint, включая no-param-reassign
, которые я никогда раньше не использовал.
У меня есть метод, который должен:
принять массив columnDefinition
объектов
Перебрать объекты и назначить каждому из них columnDefinition.originalOrder
число
Изменить порядок& вернуть массив.
no-param-reassign
продолжает выдавать ошибки, если я не использую lodash для создания нового массива новых объектов и возврата этого.
Так, например, я передаюв
[
{
label: 'Number of Siblings',
searchEnabled: false,
sortEnabled: false,
newOrder: 3,
lotsOfNestedData: {
moreNesting: 'etc',
},
},
{
label: 'Pet Name',
searchEnabled: false,
sortEnabled: false,
newOrder: 1,
lotsOfNestedData: {
moreNesting: 'etc',
},
},
{
label: 'Favorite Hobby',
searchEnabled: false,
sortEnabled: false,
newOrder: 4,
lotsOfNestedData: {
moreNesting: 'etc',
},
},
{
label: 'Favorite Outfit',
searchEnabled: false,
sortEnabled: false,
newOrder: 2,
lotsOfNestedData: {
moreNesting: 'etc',
},
},
]
Без этого правила я бы .each
просматривал массив и мутировал объекты со свойством item.originalOrder = idx
.Затем измените массив с помощью .sort
на основе newOrder
.
С правилом отсутствия мутирующих параметров лучше всего придумать создание нового массива (чтобы я мог его отсортировать), а затем создатьклоны каждого объекта, к которому я могу добавить свойство .originalOrder
.
const newSrcArray = _.map(srcArray, (item, idx) => {
const newItem = _.cloneDeep(item);
newItem.originalOrder = idx;
return newItem;
});
//sort newSrcArray
return newSrcArray;
Это похоже на дополнительный код и память, но я что-то упустил полностью?
Является ли этот шаблон / память предпочтительным способом сделать это?
Илилучшая практика просто выключить правило?