Я пытаюсь создать набор редукторов, чтобы изменить атрибут всех объектов во вложенном списке.
Входная полезная нагрузка выглядит следующим образом:
const payload = [
{
name: "Peter",
children: [
{
name: "Sarah",
children: [
{
name: "Sophie",
children: [
{
name: "Chris"
}
]
}
]
}
]
}
];
Теперь я хочу изменить атрибут name
всех элементов и дочерних элементов.
const mapJustNickname = elem => {
return {
...elem,
nickname: elem.name + "y"
};
};
Как рекурсивно использовать эту функцию карты для всех дочерних элементов?
Я нашел способ сделать это, поместив рекурсию в одну и ту же функцию отображения.
const mapToNickname = (elem) => {
return {
nickname: elem.name +'y',
children: elem.children && elem.children.map(mapToNickname)
}
}
console.log(payload.map(mapToNickname));
Но мне бы хотелось, чтобы отображение имени было отделено от рекурсии (из-за того, что функции отображения были максимально простыми), и чтобы я мог связать их позже. Можно ли как-то сделать это с двумя редукторами, а затем связать их вместе?