JavaScript组数组-使用定义的边找到可以行进的数字集
请看以下输入和输出数组-
const input = ["0:3", "1:3", "4:5", "5:6", "6:8"]; const output = [ [0, 1, 3], [4, 5, 6, 8] ];
将每个数字视为图形中的一个节点,并将每个成对的x:y作为节点x和y之间的边,我们需要使用定义的边找到可以移动到的数字集。
也就是说,以图论的术语来说,可以找到这种图中不同的连接组件。例如,在上面的数组中,没有办法从4到0传播,所以它们在不同的组中,但是有一种办法从1到0传播(通过3),因此它们在同一组中。重申所需的输出是基于潜在随机输入集的一组可互换节点。
我们需要编写一个JavaScript函数,该函数从给定的输入构造所需的输出。
示例
const input = ["0:3", "1:3", "4:5", "5:6", "6:8"];
const groupRange = (arr = []) => {
const res = [[]];
let count = 0;
const a = [0];
let array = arr.map(el => el.split(':').sort((a, b) => a - b)). sort((a, b) => a[0] - b[0]); array.forEach(el => {
if (el[0] > a[a.length - 1]) {
res.push(el);
a.push(el[1]);
count++;
} else {
res[count] = res[count].concat(el);
a[a.length - 1] = el[1];
};
});
return res.map(el => [...new Set(el)].sort((a, b) => a - b));
}
console.log(groupRange(input));输出结果
控制台中的输出将是-
[ [ '0', '1', '3' ], [ '4', '5', '6', '8' ] ]
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短