Solved

Javascript Tree Traversal

Posted on 2011-03-15
3
567 Views
Last Modified: 2012-05-11
Can you demonstrate tree traversal in Javascript on this page?
0
Comment
Question by:JCW2
3 Comments
 
LVL 20

Accepted Solution

by:
Proculopsis earned 250 total points
ID: 35148418

Do you mean something like this:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q__26783203.html</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">

jQuery(document).ready( function () {

  var tree = {
    myNull: null,
    myBoolean: true,
    myNumber: 3.1415926535897932,
    myString: "Hello World!",
    myArray: [ null, true, 3.1415926535897932, "Hello World!" ],
    myObject: { myNull: null, myBoolean: true, myNumber: 3.1415926535897932, myString: "Hello World!", myArray: [ null, true, 3.1415926535897932, "Hello World!" ] }
  };

  $("#result").text( tree.traverse() );

});

Object.prototype.traverse = function(){
  var result = "";
  var depth = (arguments.length != 0)? arguments[0] + 1 : 0;
  var level = "";
  while ( level.length != depth * 2 ) level += "  ";

  switch ( type( this ) ) {
    case "Boolean": 
    case "Number": 
      result += this;
    break;

    case "String":
      result += "\"" + this + "\"";
    break;

    case "Array":
      resolve( this, "[", "]", false );
    break;

    case "Object":
      resolve( this, "{", "}", true );
    break;
  }

  return result;

  function resolve( value, prefix, suffix, label ) {
    result += prefix + "\r";
    for ( entry in value )
      if( isSimple( value[entry] ) ){

      inset( "  " );
      if ( label ) result += "\"" + entry + "\": ";
      result += (value[entry] != null)? value[entry].traverse( depth ) : "null";
      result += ",\r";
    }
    result = result.replace( /,\r$/m, "\r" );
    inset( suffix );
  }

  function type( probe ) {
    var theType = "Null";
    if ( probe != null ) theType = probe.constructor.toString().replace( /(?:\n|\r|.)*?[ ]{1}([^\(]+)(?:\n|\r|.)*/m, "$1" );
    return theType;
  }

  function isSimple( value ) {
    return "Null,Boolean,Number,String,Array,Object".indexOf( type( value ) ) != -1;
  }

  function inset( value ) {
    result += level + value;
  }

}

</script>
</head>
<body>

<pre id="result">
</pre>

</body>
</html>

Open in new window

0
 
LVL 19

Assisted Solution

by:nschafer
nschafer earned 250 total points
ID: 35168515
Do you mean making a TreeView in javascript?

If so here is a tutorial I've created on the subject.

http://www.applicationgroup.com/tutorials/treeview/JS_TreeView_Sample.asp

Hope this helps,
Neal.
0
 

Author Closing Comment

by:JCW2
ID: 35222569
Thank you for your help.
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Problem to refer to value 8 49
How to make a moving character 3 57
powershell script 9 25
Jquery Validation Messages Not Showing Up 3 13
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
Although it can be difficult to imagine, someday your child will have a career of his or her own. He or she will likely start a family, buy a home and start having their own children. So, while being a kid is still extremely important, it’s also …
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…

778 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question