我要递归通过深度嵌套的obj 对深度嵌套的对象数组进行排序,该对象由id键。
此功能有效但是,当我console.log
调用该功能时,结果为undefined
。
如果我console.log
在调用此函数之前和之后对其进行排序,则作为参数传递的未排序对象数组会被排序,但这不是从函数调用中返回的- 这是一个变体,我正努力避免。
我尝试过的几件事:
.map()
而不是最初调用.reduce()
,并且
添加一个空数组作为累加器,从而允许该函数
返回但没有排序:/ 最后返回我正在调用的.map()
数组是可行的-
但这似乎是一种hack,并且还将结果包含在
数组。
我已经尝试过将返回值放在不同的位置,但是通常会得到[undefined]
或数组数组
包含未定义
function sortDeepNestedArray(unsortedArray, sortedObj){unsortedArray.map((obj) => {
const children = obj.Children;
const Id = obj.Id
if (children && children.every(o => !o.Children)) {
Object.keys(sortedObj).map(key => {
if (Id === key) {
return children.sort((a, b) => {
a = sortedObj[key].Children[a.Id]
b = sortedObj[key].Children[b.Id]
return a - b
});
}
});
}
Object.keys(sortedObj).map(key => {
const isNotBaseCase = children &&
children.every(o => o.Children) &&
Id === key &&
sortedObj[key] &&
sortedObj[key].Children
if (isNotBaseCase) {
sortDeepNestedArray(children, sortedObj[key].Children);
}
});
});
}