javascript - 将路径数组转换为唯一路径数组
问题描述
我有一组路径,我想将其转换为一组唯一路径。下面是我的尝试,我知道函数 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”表示,到两个子节点“M7gtymFAo4”和“53s1L4YLpo”的输入用“i”表示,每个子节点,即 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
但该解决方案缺乏有关投入、产出和指数的信息
解决方案
推荐阅读
- python - 如何仅根据python中的索引更新列表中的列表,而不更新所有列表
- flutter - VmService时间戳与flutter驱动时间线事件时间戳不对应
- python - Timeit 模块,三引号代码与函数
- angular - GrapesJS not displayed properly
- java - 转换地图
> 到嵌套 JSON - javascript - 找出一串数字中的最大小数位数
- c# - 如何从 Angular 请求 c# 控制器中的参数?(没有 url 连接)
- html - css:图像在垂直居中时覆盖容器
- angular - 当订阅方法成功完成时,如何初始化响应的某些属性 - 在完整方法中?
- c++ - 如何构造从泛型树到 ab 树的继承