我有一系列路径,我想将其转换为唯一路径数组。下面是我的尝试,我知道函数returnPath中有一个递归调用,但不知道如何实现它。
var paths = [{
out: "KFvEbaKPDC|o|0",
in: "M7gtymFAo4|i|0"
}, {
out: "KFvEbaKPDC|o|0",
in: "53s1L4YLpo|i|0"
}, {
out: "M7gtymFAo4|o|0",
in: "DEa78KAyDf|i|0"
}, {
out: "53s1L4YLpo|o|0",
in: "R6hUSNn5T5|i|0"
}]
function chainPaths(paths) {
let localCopy = paths;
const chainPaths = [];
localCopy = localCopy.filter((item) => {
if (item.out.split('|')[0] === 'KFvEbaKPDC') {
return item;
}
})
console.log(localCopy);
localCopy.forEach((c) => {
chainPaths.push(returnUniquePath(c));
})
}
function returnUniquePath(c) {
const arr = [];
arr.push(c.out);
arr.push(c.in);
//recursive call here may be??
return arr;
}
chainPaths(paths)
我希望最终得到一个具有如下所示的唯一路径的数组
[[
"KFvEbaKPDC|o|0",
"M7gtymFAo4|i|0"
"M7gtymFAo4|o|0",
"DEa78KAyDf|i|0"
],[
"KFvEbaKPDC|o|0",
"53s1L4YLpo|i|0"
"53s1L4YLpo|o|0",
"R6hUSNn5T5|i|0"
]]
让我们想象'KFvEbaKPDC'是一个父节点,这个父节点有输出路径,在KFvEbaKPDC | o | 0中用'o'表示,在'i'表示输入的两个子节点'M7gtymFAo4'和'53s1L4YLpo' '和每个子节点,即M7gtymFAo4'和'53s1L4YLpo'具有到另一个节点的输出路径。希望这是有道理的。
可以看到如下所示的唯一路径
KFvEbaKPDC|o|0 -> M7gtymFAo4|i|0 -> M7gtymFAo4|o|0 -> DEa78KAyDf|i|0
KFvEbaKPDC|o|0 -> 53s1L4YLpo|i|0 -> 53s1L4YLpo|o|0 -> R6hUSNn5T5|i|0
我能够对路径数组进行树化,然后能够遍历像
这样的独特路径KFvEbaKPDC -> M7gtymFAo4 -> DEa78KAyDf
但该解决方案缺乏有关输入,输出和指数的信息