Need help with javascript array

Hi all.  Thank you in advance.

First I create an array like this:

var myArray = [];

I have some objects that are keeping track of information for me.  I have created them as thus:

var x = {a: "someinfo", b: "some more info" myID: "ID0"}

Then I add it to an Array like this:

myArray.push(x);

I set x to null, and will use it again in the future to possibly add more objects to the array. All of my objects have the exact same structure, but of course have a different "myID"

This "seems" to work fine for me except when it comes time to pull the information for one of the objects out of the array. I try to get the index as follows:

var myX = searchArray(myArray, "ID0");

and my searchArray function looks like this:

searchArray : function(arr, toFind)
{
  if(arr.constructor != Array)
    {
    return -1;
    }
    for(var i = 0, len = arr.length; i < len; i++)
    {
      if(arr[i].myID == toFind)
      {
        return i;
      }
    }
return -2;
}

I thought this would loop through the array until it found a matching myID and then send that index back to me so I could use the index to pull the object from the array.  When I have multiple objects in the array, and I write out whet the myID "should" be, it always comes back as 'undefined'.  I don't understand this at all.  There are clearly as many objects in the array as I have added, and on another function, it will actually loop through and write the myID.

I am so confused, and not very good with javascript (obviously).

This shouldn't be this difficult.  Can anyone help?

Thank you.

Steve
sstolp2005Asked:
Who is Participating?
 
HonorGodConnect With a Mentor Software EngineerCommented:
Correcting  the syntax...  this works for me...

The external script file (objDisplay.js) contains some code that I wrote to help me dump the contents of objects.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Template</title>
<script type='text/javascript' src='../objDisplay.js'></script>
<script type='text/javascript'>
  function searchArray(arr, toFind) {
    if ( arr.constructor != Array ) {
      alert( 'not array' )
      return -1;
    }
    var len = arr.length
    for( var i = 0; i < len; i++ ) {
      if( arr[ i ].myID == toFind ) {
        alert( 'found at: ' + i )
        return i;
      }
    }
    alert( 'not found' )
    return -2;
  }
 
  window.onload = function() {
    var debug = document.getElementById( 'debug' )
 
    var myArray = []
    debug.innerHTML = objDisplay( 'myArray', myArray )
    debug.innerHTML += '<hr><br>'
 
    var x = {a: "someinfo", b: "some more info", myID: "ID0"}
    debug.innerHTML += objDisplay( '<br>x', x )
    debug.innerHTML += '<hr><br>'
 
    myArray.push( x )
 
    debug.innerHTML += objDisplay( '<br>myArray', myArray )
    debug.innerHTML += '<hr><br>'
 
    debug.innerHTML += objDisplay( '<br>myArray[0]', myArray[0] )
    debug.innerHTML += '<hr><br>'
 
    x = null
 
    debug.innerHTML += objDisplay( '<br>myArray[0]', myArray[0] )
 
    var inx = searchArray( myArray, "ID0" )
  }
</script>
</head>
<body>
<div id='debug'></div>
</body>
</html>

Open in new window

objDisplay.js.txt
0
 
sstolp2005Author Commented:
Wow.  This really helped.  I think I can figure it out from here.  Thank you SO much!!
0
 
HonorGodSoftware EngineerCommented:
You are very welcome.  Thank you for the grade & points.

Good luck & have a great day.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.