Home > Software engineering >  How to :Retrieve & check nested Objects in an Array
How to :Retrieve & check nested Objects in an Array

Time:11-22

I have the following issue that I was not able to solve for the last couple of days.

So I have a class called "Nodes" which has the property Neighbors - which is an Array.

When I insert into a Node (Node A) a Node(Node B) as a "Neighbor" into the Neighbors array, it has to be an instance of the Class Neighbors that takes the instance of Node B as a parameter as an "opposite node".

Now I have to create a Statement that checks if this connection between Node A and B already exists or not

what is the best way to do that? I came across the method of destructuring but I am not sure if that is suited for the task.

class Node {
  constructor(nodeName) {
    this.nodeName = nodeName;
    this.neighbours = [];
  }
};

class Neighbour {
  constructor(oppositeNode, weight = null) {
    this.oppositeNode = oppositeNode;
    this.weight = weight;
  }
};

nodea = new Node(a);
nodeb = new Node(b);
nodea.neighbours.push(new Neighbour(nodeb));

So the Statement that I want to be able to write is the following:

Pseudo Code

If (NODE A has NODE B in NODE A.neighbours) {x}

Thanks in advance

CodePudding user response:

Here is a continuation of your script with a check using the find method:

class Node {
  constructor(nodeName) {
    this.nodeName = nodeName;
    this.neighbours = [];
  }
};

class Neighbour {
  constructor(oppositeNode, weight = null) {
    this.oppositeNode = oppositeNode;
    this.weight = weight;
  }
};

nodea = new Node("a");
nodeb = new Node("b");
nodea.neighbours.push(new Neighbour(nodeb));

let neighbour = nodea.neighbours.find(neighbour => neighbour.oppositeNode == nodeb);

if (neighbour) console.log("found neighbor. It has weight "   neighbour.weight);
else console.log("not found");
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

  • Related