HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Searching an object tree structure

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
objectstructuresearchingtree

Problem

I have this recursive function that searches an object tree structure:

dataSearcher = (dataElement, identifierToFind) -> 
    if dataElement.identifier == identifierToFind
        return dataElement
    else
        for childDataElement in dataElement.children
            found = dataSearcher childDataElement, identifierToFind
            if found then return found


Which I then call thus:

foundDataElement = dataSearcher @options.nodeData, identifier


It works just fine so I am happy about that, but I am pretty new to CoffeeScript and would like feedback on the way I structured it. The loop I used seems a bit old school, so could I have used a comprehension here instead? Any other feedback would be great as I am still getting my head into the CoffeeScript idiom.

Please let me know if I should edit with more context code.

Solution

I'd prefer writing it like this:

dataSearcher = (element, identifier) -> 
  return element if element.identifier is identifier
  for child in element.children
    found = dataSearcher child, identifier
    return found if found


Changes:

  • guard style instead of else (one less level of indentation)



  • postfix if (probably a question of style)



  • is instead of ==



  • shorter variable names

Code Snippets

dataSearcher = (element, identifier) -> 
  return element if element.identifier is identifier
  for child in element.children
    found = dataSearcher child, identifier
    return found if found

Context

StackExchange Code Review Q#7618, answer score: 6

Revisions (0)

No revisions yet.