connected nodes

by thebabydino

JavaScript

function Node(value, connections) {
    this.value = value;
    this.connections = connections;
    this.isConnected = function(nodeValue, visited) {
        if(this.value == nodeValue) return true;
        if(!wasVisited(visited, this.value)) visited.push(this.value);
        if(nodeValue in visited || !getNode(nodeValue)) return false;
        var len = this.connections.length;
        for(var i = 0; i < len; i++) {
            if(wasVisited(visited, this.connections[i])) continue;
            if(this.connections[i] == nodeValue || getNode(this.connections[i]).isConnected(nodeValue, visited)) return true;
        }
        return false;
    }
}
        
var wasVisited = function(visited, val) {
        for(var i = 0; i < visited.length; i++)
            if(val == visited[i]) return true;
        return false;
}

// nodes
var nodes = [];
for(var i = 0; i < 12; i++) nodes[i] = new Node(i, []);

var connectNodes = function(A, B) {
    var nodeA = getNode(A);
    var nodeB = getNode(B);
    nodeA.connections.push(B);
    nodeB.connections.push(A);
}
var connectMultipleNodes = function(A, nodeValList) {
    for(var i = 0; i < nodeValList.length; i++)
        connectNodes(A, nodeValList[i]);
}

var getNode = function(nodeValue) {
    var arrLen = nodes.length;
    for(var i = 0; i < arrLen; i++)
        if(nodes[i].value == nodeValue) return nodes[i];
    return false;
}

// connect nodes
connectNodes(0, 1);
connectMultipleNodes(2, [1,4,5,7]);
connectNodes(8, 9);

// console.log(nodes);
console.log(getNode(2).isConnected(4, []));
console.log(getNode(1).isConnected(4, []));
console.log(getNode(0).isConnected(7, []));
console.log(getNode(0).isConnected(9, []));