JSFiddle - React, Tailwind, and code Playground

by booktu8

JavaScript

function findNotConnection(nodes) {
  let group = []
  let targetIds = '';
  let idGroup = null;
  let junctionGroup = [];
  let len = nodes.length;

  (function find(data, index) {
    let node = data[index][1];
    let connections = node.connections
    junctionGroup = junctionGroup.concat(connections)
    if (index === len - 1) return false;
    return find(nodes, index + 1)
  }(nodes, 0));

  for (let i = 0; i < junctionGroup.length; i++) {
    let arr = []
    let itemi = junctionGroup[i]
    let suuid = itemi.suuid.slice(0, -3)
    let tuuid = itemi.tuuid.slice(0, -3)
    for (let j = 0; j < junctionGroup.length; j++) {
      let itemj = junctionGroup[j]
      let sourceId = itemj.suuid.slice(0, -3)
      let targetId = itemj.tuuid.slice(0, -3)
      if (tuuid === sourceId) {
        arr = [suuid, tuuid, targetId]
        if (targetIds === '') {
          targetIds += `${suuid},${tuuid},${targetId}`;
        }
        arr.forEach(item => {
          if (targetIds.indexOf(item) >= 0) {
            targetIds += (',' + arr.join(','))
          }
        })
      }
    }
    arr = null
  }
  idGroup = new Set(targetIds.split(','));
  return idGroup
}


findNotConnection(data);