es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo: Recuperar y verificar objetos anidados en un arreglo.

Tengo el siguiente problema que no he podido resolver durante los últimos días.

Tengo una clase llamada “Nodes” que tiene la propiedad “Neighbors” – que es una matriz.

Cuando inserto en un nodo (Nodo A) un Nodo (Nodo B) como un “Vecino” en la matriz de Vecinos, debe ser una instancia de la Clase Vecinos que toma la instancia del Nodo B como parámetro como un “nodo opuesto”.

Ahora tengo que crear una declaración que compruebe si esta conexión entre el Nodo A y B ya existe o no.

¿Cuál es la mejor manera de hacerlo? Me encontré con el método de desestructuración, pero no estoy seguro de si es adecuado para la tarea.

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));

Entonces, la declaración que quiero poder escribir es la siguiente:

Pseudo código

Si (NODO A tiene NODO B en NODO A. Vecinos) {x}

Gracias de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para comprobar si la conexión entre el Nodo A y el Nodo B ya existe en el array de vecinos del Nodo A, se puede utilizar el método some(). Este método prueba si al menos un elemento del array pasa el test implementado por la función que se proporciona. En este caso, podemos crear una función que compruebe si la propiedad oppositeNode de cada vecino coincide con el Nodo B de la siguiente forma:

    if (nodea.neighbours.some( neighbour => neighbour.oppositeNode === nodeb )) {
      // la conexión ya existe
      // hacer algo aquí
    }
    

    Este código devolverá true si se encuentra un objeto vecino con la propiedad oppositeNode igual al Nodo B en el array de vecinos del Nodo A, y false en caso contrario. Si la condición es verdadera, se puede realizar la acción deseada o saltarla si la condición es falsa.

Comments are closed.