我有一个包含一些相邻矩形的基团的数组:如何基于特定条件拆分数组的数组?
var paths = [
[3,4,6,7],
[8,10],
[13]
];
的矩形被定义如下:
var rectangles = [
{id:1,left:[],right:[2]},
{id:2,left:[1],right:[11]},
{id:3,left:[2],right:[4]},
{id:4,left:[3],right:[5]},
{id:5,left:[11],right:[6,12]},
{id:6,left:[5],right:[7]},
{id:7,left:[6],right:[]},
{id:8,left:[],right:[9]},
{id:9,left:[8],right:[10]},
{id:10,left:[9],right:[2]},
{id:11,left:[2],right:[5]},
{id:12,left:[5],right:[]},
{id:13,left:[],right:[9]}
];
从矩形定义,我看到的矩形4和6是不邻居,因为4不是6的右边,而6不是4的左边。对于8和10来说是一样的。
现在,我想将路径数组拆分为每个相邻矩形组都有单独的条目,像这样:
result = [
[3,4],
[6,7],
[8],
[10],
[13]
];
当我找到两个非相邻矩形的两个连续id时,如何分割数组并创建新条目?
拨弄测试数据:https://jsfiddle.net/4jpy84k4/
编辑: 最终解决方案感谢托比亚斯ķ:https://jsfiddle.net/j1of5p4c/4/
我刚刚更新了您的解决方案的示例小提琴,您可以看到邻居的确切定义。除此之外,只有一个疑问:为什么结果是:[[3,4],[6,7],[8],[10],[[13]]]?最后一项应该简单[13]。 – deblocker
我看不到,为什么13应该包裹两次,因此如果问:“if(j + 1 == paths [i] .length){” –
It's here:'results。push([paths [i]]);'应该是'results.push(paths [i]);'请更新您的答案,以便我可以接受它:-) – deblocker