我有此数据:
const main = 'a';
const data = [{
from: 'a',
to: 'b'
}, {
from: 'b',
to: 'c'
}, {
from: 'c',
to: 'd'
}, {
from: 'b',
to: 'd'
},
{
from: 'd',
to: 'e'
},
{
from: 'a',
to: 'e'
}
];
我想对其进行格式化,因此结果类似于:
{
col1: [b, ""],
col2: [c, "", ""],
col3: [d, ""],
col4: [e]
}
此布局将用于将节点放置到其位置。
图形应该看起来像(抱歉我的绘画技巧很差):
空字符串代表“不可见节点”,我将使用它们将其他节点与路径连接起来。该图将具有固定的节点位置。
我如何实现以上格式?谢谢
答案 0 :(得分:0)
这是一个快速的示例解决方案。
from
和to
)的顺序遵循data
中遇到它们的顺序注意:这大约是O(m * n)
const main = 'a';
const data = [...];
let order = [];
let res = {};
data.forEach(i => {
if (!order.includes(i.from)) {
order.push(i.from);
res[i.from] = 0;
}
if (!order.includes(i.to)) {
order.push(i.to);
res[i.to] = 0;
}
for (let temp = order.indexOf(i.from) + 1; temp < order.indexOf(i.to); temp++)
res[order[temp]]++;
});
您可以从a
中删除res
,并根据需要更改数据结构,等等。