Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

128
Vistas
¿Cómo encontrar si el objeto está asignado dentro del mismo objeto? Redundancia cíclica
var person = { name:'asdfds', key:1 } person.next = person;

¿Cómo solucionar esta redundancia cíclica en javascript?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Como se menciona en el comentario, puede verificar la referencia circular con el operador === , el siguiente código se evalúa como verdadero:

 var person = { name:'asdfds', key:1 } person.next = person; if(person.next === person) { console.log('It is the same object.') } else { console.log('it is not the same.') }

Con esta información dada, puede evitar bucles interminables manteniendo una array de references a los objetos que ya ha recorrido.

 function loopThroughObject(obj, references = []) { // store the reference to this object!. references.push(obj) Object.keys(obj).forEach(k => { const val = obj[k] if (typeof val === 'object') { if (references.includes(val)) { console.log('circular reference found.. stop loop') return } else { // iterate through the object once!. // pass the references array aswell. loopThroughObject(val, references) } } else { // the value found under key is not an object and "unique", do something with it! console.log(`Found a value:`, val) } }) } /// Some test data. const innerObj = { innerName: 'innerName', key: 3 } const person = { name: 'asdfw', key: 1, innerObj: innerObj } person.next = person person.innerObj.circular = person person.innerObj.veryCircular = innerObj person.innerObj.otherCircularPerson = person // This should now print every primitive value only once. loopThroughObject(person)

Esto le da la salida deseada de cada valor primitive una vez:

 Found a value: asdfw Found a value: 1 Found a value: innerName Found a value: 3
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda