将路径数组转换为唯一路径数组

时间:2018-05-03 17:12:52

标签: javascript arrays json

我有一系列路径,我想将其转换为唯一路径数组。下面是我的尝试,我知道函数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 

但该解决方案缺乏有关输入,输出和指数的信息

0 个答案:

没有答案