【发布时间】:2019-09-07 04:00:45
【问题描述】:
我正在尝试创建一组化简器以更改嵌套列表中所有对象的属性。
输入负载如下所示:
const payload = [
{
name: "Peter",
children: [
{
name: "Sarah",
children: [
{
name: "Sophie",
children: [
{
name: "Chris"
}
]
}
]
}
]
}
];
我现在想更改所有元素和子元素的name 属性。
const mapJustNickname = elem => {
return {
...elem,
nickname: elem.name + "y"
};
};
如何在所有子元素上递归使用这个 map 函数?
我找到了一种方法,将递归放在同一个映射函数中。
const mapToNickname = (elem) => {
return {
nickname: elem.name +'y',
children: elem.children && elem.children.map(mapToNickname)
}
}
console.log(payload.map(mapToNickname));
但我希望将名称的映射与递归分开(出于使映射函数尽可能简单的原因)并能够稍后将它们链接起来。是否有可能使用两个减速器然后将它们链接在一起?
【问题讨论】:
标签: javascript node.js ecmascript-6 functional-programming reduce