Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

130
Views
How to find if object is assigned inside the same object? cyclic redundancy
var person = {
    name:'asdfds',
    key:1
}

person.next = person;

How to fix this cyclic redundancy in javascript?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

As mentioned in the comment, you can check circular reference with === operator, following code evaluates to true:

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.')
}

With this given information you can avoid looping endlessly by holding an array of references to the objects you have already looped through.


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)

This gives you the desired output of every primitive value once:

Found a value: asdfw
Found a value: 1
Found a value: innerName
Found a value: 3

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!