gpt4 book ai didi

javascript - Javascript 中的传递性减少

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:02 25 4
gpt4 key购买 nike

我正在根据以下输入确定给定路线的传递性

[
{
id: 1,
vessel: 'Vessel 1',
routeId: 1,
port: 'HK',
eta: null,
etd: '2016-01-03 00:00:00'
},
{
id: 2,
vessel: 'Vessel 1',
routeId: 1,
port: 'SG',
eta: '2016-01-06 00:00:00',
etd: '2016-01-09 00:00:00'
},
{
id: 3,
vessel: 'Vessel 3',
routeId: 2,
port: 'SG',
eta: '2016-01-12 00:00:00',
etd: '2016-01-14 00:00:00'
},
{
id: 4,
vessel: 'Vessel 3',
routeId: 2,
port: 'OAK',
eta: '2016-01-18 00:00:00',
etd: null
},
{
id: 5,
vessel: 'Vessel 4',
routeId: 3,
port: 'OAK',
eta: '2016-01-21 00:00:00',
etd: '2016-01-23 00:00:00'
},
{
id: 6,
vessel: 'Vessel 4',
routeId: 3,
port: 'LAX',
eta: '2016-01-28 00:00:00',
etd: null
}
];

如果您查看基于 routeID 键的各个路由,

routeID: 1, 我们有

HK --> SG

routeID:2,我们有

SG --> OAK

routeID:3, 我们有

OAK --> LA

现在传递性适用于两个不同的 routeID,并且基于上述路径,我们可以说存在有效的传递性

HK --> OAK, HK --> LA, SG --> LA

我解决这个问题的最初方法是首先为单个路由创建一个目标/目标集,看起来像这样

  {
1:{
HK: [SG],
SG: []

},
2:{
SG: [US],
US: []
},
3:{
US: [USLA],
USLA: []

}
}

然后我将使用上面的原始输入遍历每个项目并使用创建的集合确定不同 routeID 之间是否存在传递性。但我想帮助解决这个问题,因为我目前的思考过程似乎没有得到预期的结果。

编辑

预期的输出是

[
{
vessels: ['Vessel 1', 'Vessle 3'],
routeIds: [1, 2],
origin: 'HK',
destination: 'OAK',
etd: '2016-01-03 00:00:00',
eta: '2016-01-18 00:00:00'
},
{
vessels: ['Vessel 1', 'Vessel 3', 'Vessel 4'],
routeIds: [1, 2, 3],
origin: 'HK',
destination: 'LA',
etd: '2016-01-03 00:00:00',
eta: '2016-01-28 00:00:00'
},
{
vessels: ['Vessel 3', 'Vessel 4'],
routeIds: [2, 3],
origin: 'SG',
destination: 'LA',
etd: '2016-01-14 00:00:00',
eta: '2016-01-28 00:00:00'
}
]

最佳答案

您可以为给定的路线获取一个对象,并使用一个函数来检查 id 单个路线是否可用。

const
check = (from, to) => routes[from]
? routes[from].some(t => t === to || check(t, to))
: false;

var routes = { HK: ['SG'], SG: ['OAK'], OAK:['LA'] };

console.log([
['HK', 'OAK'], // true
['HK', 'LA'], // true
['SG', 'LA'], // true
['LA', 'OAK'] // false
].map(a => check(...a)));

关于javascript - Javascript 中的传递性减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com