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
-~----------~----~----~----~------~----~------~--~---

Reply via email to