Hi Gabriel - many thanks for this tip! All the best
George On Dec 5, 10:04 pm, "Gabriel Gilini" <[EMAIL PROTECTED]> wrote: > I forgot to say that apparently Safari <= 2.0 and IE5.2 on mac doesn't > implement the hasOwnProperty method. > > Gabriel Gilini > > www.usosim.com.br > [EMAIL PROTECTED] > [EMAIL PROTECTED] > > On Fri, Dec 5, 2008 at 8:01 PM, Gabriel Gilini <[EMAIL PROTECTED]>wrote: > > > If you want to iterate through an array with the constructor object's > > prototype extended use Object.prototype.hasOwnProperty(). > > > var arr = [0,1,2,'foo','bar']; > > > for(var i in arr){ > > if(arr.hasOwnProperty){ > > if(arr.hasOwnProperty(i)) > > alert(arr[i]); > > } > > } > > > Gabriel Gilini > > >www.usosim.com.br > > [EMAIL PROTECTED] > > [EMAIL PROTECTED] > > > On Fri, Dec 5, 2008 at 11:37 AM, T.J. Crowder <[EMAIL PROTECTED]>wrote: > > >> Hi George, > > >> (It's a JavaScript rather than Prototype/script.aculo.us question, > >> yes.) > > >> This object literal / JSON data: > > >> [{bookingref:'A6D98FGR', canceled:0}] > > >> ...defines an array with a single element, which is an object instance > >> with two properties: bookingref (value 'A6D98FGR') and canceled > >> (value 0). > > >> You can get the values just by referring to the properties of the > >> object, so: > > >> var x = RS[0].bookingref; > >> alert(x); // Alerts 'A6D98FGR' > > >> JavaScript allows you to use property names both literally with dot > >> notation (as above), and _also_ via string names using bracket > >> notation; we could write the above like this instead: > > >> var x = RS[0]['bookingref']; > >> alert(x); // Alerts 'A6D98FGR' > > >> Note the quotes, the square brackets, and the absense of the dot. > > >> If you don't know the names of the properties in advance, you can use > >> the for..in loop to iterate over the names of the object's properties: > > >> var name; > >> for (name in RS[0]) { > >> alert(name + '=' + RS[0][name]); > >> } > > >> In the loop, the variable 'name' is set on each iteration to the name > >> of a property on the object, as a string. This is powerful when > >> combined with bracket notation. On the object defined in your JSON > >> above, that will show "bookingref=A6D98FGR" and "canceled=0"; the > >> order is not defined and almost certainly will vary from > >> implementation to implementation. > > >> Note that for..in is for iterating over the properties of an object, > >> *not* the elements of an array. Many JavaScript programmers think > >> it's for the latter, and they get into trouble as a result because > >> Prototype adds some properties to arrays that they're not expecting to > >> see. Details: > >>http://proto-scripty.wikidot.com/prototype:tip-looping-through-arrays > > >> But again, it's totally fine for looping through the properties on an > >> object, like your RS[0]. > > >> HTH, > >> -- > >> T.J. Crowder > >> tj / crowder software / com > > >> On Dec 5, 12:18 pm, George <[EMAIL PROTECTED]> wrote: > >> > Hi Folks, > > >> > This may be more of a pure JavaScript question than Prototype, but > >> > here goes: > > >> > If I have a JSON array called RS for example containing this: > >> > [{bookingref:'A6D98FGR', canceled:0}] > >> > is there a way for me to programatically get the names and values? > > >> > I'd like to be able to do something like > >> > RS[0].[0].name ((would be 'bookingref')) > >> > RS[0].[0].value ((would be 'A6D98FGR')) > > >> > I hope that makes sense. > > >> > Many thanks > > >> > George --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---