javascript算法 最短路径问题

var obj = {
    1: [2, 3],
    2: [1, 4, 5],
    3: [1, 7, 8],
    4: [2, 7],
    7: [4, 8],
}
var 起点 = 1
var 终点 = 8

var f = 起点 => 终点 => 数据 => 路径 => {
    if (起点 == 终点)
        return [路径]
    if (路径.length == Object.keys(数据).length + 1)
        return [[]]
    if (obj[起点] == null)
        return [[]]
    return obj[起点].filter(a => !路径.includes(a)).map(a => f(a)(终点)(数据)([...路径, a])).flat().filter(a => a.length != 0)
}

console.log(
    f(起点)(终点)(obj)([起点])
)

posted on 2020-05-17 14:17  fox_charon  阅读(776)  评论(0编辑  收藏  举报

导航