问题
假如一个储存有连线数据的数组,例:1->2->3
let link = [ { from:1,to:2}, { from:2,to:3}, { from:3,to:4},];复制代码
需要判断检查数组中的数据是否有往回连接的情况,比如发生了1->2->3->1这种情况。捣鼓了半天我写的代码如下(不考虑两个点之间有重复连接和互相连接的情况下):
// 测试数据let link = [ { from:3,to:4}, { from:3,to:5}, { from:2,to:4}, { from:2,to:3}, { from:1,to:2}, { from:2,to:5}];// 检查每一条线路是否有往回连接function checkLine(arr,data){ let _to = arr[arr.length-1]; for(let j=0;j(item.from!==data[j].from && item.to!==data[j].to)); checkLine(arr,_data); return; } } }}// 标记是否有往回连接的情况let flag = false;// 开始for(let i=0;i (item.from!==link[i].from && item.to!==link[i].to)); checkLine(arr,_data);}if(flag===true){ console.log("出错");}复制代码
上面的代码简单的测试了下应该没问题,但是我自己看着都有点乱有没有什么更好的方法。