Changing an array value to upper case?

Discussion in 'Javascript' started by Mike S. Nowostawsky, Dec 28, 2003.

  1. I tried using the "toUpperCase()" property to change the value of an array
    entity to uppercase BUT it tells me that the property is invalid. It seems
    that an array is not considered an object when it is assigned a text
    literal?? HOW can I change the array value to upper case then? What other
    method exists for arrays?

    Ex:
    var GridArrayName1 = new Array();
    GridArrayName1[0] = new Array ('test-value');
    GridArrayName1[0] = GridArrayName1[0] .toUpperCase();

    The above won't work. I even tried assigning it to an object then using the
    object's "toUpperCase()", but after the assignment the object now longer has
    that property either??

    'Sup?

    thx,

    --
    =================================================
    Mike S. Nowostawsky:
    Email: ,
    Home Page: http://www3.sympatico.ca/mikenowo/
    Lachine (Montreal), Quebec, Canada
     
    Mike S. Nowostawsky, Dec 28, 2003
    #1
    1. Advertising

  2. Mike S. Nowostawsky

    Lee Guest

    Mike S. Nowostawsky said:
    >
    >I tried using the "toUpperCase()" property to change the value of an array
    >entity to uppercase BUT it tells me that the property is invalid. It seems
    >that an array is not considered an object when it is assigned a text
    >literal?? HOW can I change the array value to upper case then? What other
    >method exists for arrays?
    >
    >Ex:
    > var GridArrayName1 = new Array();
    > GridArrayName1[0] = new Array ('test-value');
    > GridArrayName1[0] = GridArrayName1[0] .toUpperCase();
    >
    >The above won't work. I even tried assigning it to an object then using the
    >object's "toUpperCase()", but after the assignment the object now longer has
    >that property either??


    You seem to be confused about the difference between an Array and
    an element of an Array. You can't assign a text literal to an Array.
    You assign values to array elements. Array elements can be any type.

    Your second assignment creates a new Array containing one string
    element and makes that array the first element of GridArrayName1.
    You would access that string element as GridArrayName1[0][0].

    If you want to assign the string literal value to the first
    element of GridArrayName1, you should use:
    GridArrayName1[0] = "test-value";
     
    Lee, Dec 28, 2003
    #2
    1. Advertising

  3. JRS: In article <XLGHb.795$>, seen in
    news:comp.lang.javascript, Mike S. Nowostawsky <>
    posted at Sun, 28 Dec 2003 15:08:45 :-
    >I tried using the "toUpperCase()" property to change the value of an array
    >entity to uppercase BUT it tells me that the property is invalid. It seems
    >that an array is not considered an object when it is assigned a text
    >literal?? HOW can I change the array value to upper case then? What other
    >method exists for arrays?
    >
    >Ex:
    > var GridArrayName1 = new Array();
    > GridArrayName1[0] = new Array ('test-value');
    > GridArrayName1[0] = GridArrayName1[0] .toUpperCase();
    >
    >The above won't work. I even tried assigning it to an object then using the
    >object's "toUpperCase()", but after the assignment the object now longer has
    >that property either??



    By using the second new Array, you put an Array in the first Array. It
    is then GridArrayName1[0][0] that holds 'test-value', as shown by

    var GridArrayName1 = new Array();
    GridArrayName1[0] = new Array ('test-value');
    GridArrayName1[0] = GridArrayName1[0][0] .toUpperCase();

    But what you should be writing is

    var GridArrayName1 = new Array();
    GridArrayName1[0] = 'test-value'
    GridArrayName1[0] = GridArrayName1[0].toUpperCase();

    --
    © John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
    <URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang.javascript
    <URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
    <URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
     
    Dr John Stockton, Dec 28, 2003
    #3
  4. Thanks very much all 3 of you for that explanation. I now understand what
    the problem was. I'm used to creating multiple dimensional arrays in a
    different fashion. In this case I only want a single dimension, so your
    suggestion of "GridArrayName1[0] = 'test-value';" does the trick. See what
    happens when you try to modify other peoples' code without actually knowing
    their initial intentions! <chuckle>

    Thx again!

    --
    =================================================
    Mike S. Nowostawsky:
    Email: ,
    Home Page: http://www3.sympatico.ca/mikenowo/
    Lachine (Montreal), Quebec, Canada
    "Mike S. Nowostawsky" <> wrote in message
    news:XLGHb.795$...
    > I tried using the "toUpperCase()" property to change the value of an array
    > entity to uppercase BUT it tells me that the property is invalid. It seems
    > that an array is not considered an object when it is assigned a text
    > literal?? HOW can I change the array value to upper case then? What other
    > method exists for arrays?
    >
    > Ex:
    > var GridArrayName1 = new Array();
    > GridArrayName1[0] = new Array ('test-value');
    > GridArrayName1[0] = GridArrayName1[0] .toUpperCase();
    >
    > The above won't work. I even tried assigning it to an object then using

    the
    > object's "toUpperCase()", but after the assignment the object now longer

    has
    > that property either??
    >
    > 'Sup?
    >
    > thx,
    >
    > --
    > =================================================
    > Mike S. Nowostawsky:
    > Email: ,
    > Home Page: http://www3.sympatico.ca/mikenowo/
    > Lachine (Montreal), Quebec, Canada
    >
    >
     
    Mike S. Nowostawsky, Dec 29, 2003
    #4
  5. Now, my last step was to read data values from a text file instead of
    imbedding them in the html itself (i.e. read each line and assign it to the
    next value in the array). Can this be done in javascript? I've done it with
    VB and countless other languages, but don't know if javascript is that
    versatile.

    Thx,
    --
    =================================================
    Mike S. Nowostawsky:
    Email: ,
    Home Page: http://www3.sympatico.ca/mikenowo/
    Lachine (Montreal), Quebec, Canada
    "Mike S. Nowostawsky" <> wrote in message
    news:XLGHb.795$...
    > I tried using the "toUpperCase()" property to change the value of an array
    > entity to uppercase BUT it tells me that the property is invalid. It seems
    > that an array is not considered an object when it is assigned a text
    > literal?? HOW can I change the array value to upper case then? What other
    > method exists for arrays?
    >
    > Ex:
    > var GridArrayName1 = new Array();
    > GridArrayName1[0] = new Array ('test-value');
    > GridArrayName1[0] = GridArrayName1[0] .toUpperCase();
    >
    > The above won't work. I even tried assigning it to an object then using

    the
    > object's "toUpperCase()", but after the assignment the object now longer

    has
    > that property either??
    >
    > 'Sup?
    >
    > thx,
    >
    > --
    > =================================================
    > Mike S. Nowostawsky:
    > Email: ,
    > Home Page: http://www3.sympatico.ca/mikenowo/
    > Lachine (Montreal), Quebec, Canada
    >
    >
     
    Mike S. Nowostawsky, Dec 29, 2003
    #5
  6. Mike S. Nowostawsky

    Kien Guest

    Yes, you can use server-side javascript (like ASP) to read the
    textfile line by line and assign the cintent to your array.
    But this is server-side only.
    Do you have access?

    Kien


    "Mike S. Nowostawsky" <> wrote in message news:<pC_Hb.3191$>...
    > Now, my last step was to read data values from a text file instead of
    > imbedding them in the html itself (i.e. read each line and assign it to the
    > next value in the array). Can this be done in javascript? I've done it with
    > VB and countless other languages, but don't know if javascript is that
    > versatile.
    >
    > Thx,
    > --
     
    Kien, Dec 29, 2003
    #6
  7. Mike S. Nowostawsky wrote:

    > I tried using the "toUpperCase()" property to change the value of an array
    > entity to uppercase BUT it tells me that the property is invalid. It seems
    > that an array is not considered an object when it is assigned a text
    > literal??


    An array cannot be assigned a "text literal" (better: string literal)[1]
    for it has no real value.[2] What you have done by using the
    Array(...) constructor is assigning a value to an *element* of the array
    (the first one, to be precise). A special context is required to
    convert the array's "value" (see above) to a String object. Such
    contexts are for example the alert(...) method call or the (String)
    concatenation operation with "+". But note that the toString() method
    is implemented different in different hosts, so do not count on that it
    returns a comma-separated list of the elements' values or so.

    > OW can I change the array value to upper case then?


    Again, an array (here: Array object) does not have a value (at least
    none that you can actually *write* to). I presume you meant: How can
    I change the string value of all array elements to uppercase?

    One is to convert the Array object to a String object (e.g. using
    the Array.join(...) method), uppercase that String (e.g. using its
    toUpperCase(...) method) and split it into array elements again
    (e.g. using its split(...) method). Another is to iterate the array
    elements and uppercase each element. While the former is presumably
    faster, the latter is more reliable as it does not split substrings
    separated by delimiters in element values to different array elements.

    > What other method exists for arrays?


    RTFM:

    http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/array.html

    > Ex:
    > var GridArrayName1 = new Array();
    > GridArrayName1[0] = new Array ('test-value');
    > GridArrayName1[0] = GridArrayName1[0] .toUpperCase();
    >
    > The above won't work.


    BAD. Borken as designed. Maybe you did not want a
    *two-dimensional* array (because that is what you did)
    but only

    var GridArrayName1 = new Array();
    GridArrayName1[0] = 'test-value';
    GridArrayName1[0] = GridArrayName1[0].toUpperCase();

    which could be shortened to either

    var GridArrayName1 = new Array('test-value');
    GridArrayName1[0] = GridArrayName1[0].toUpperCase();

    as well as to

    var GridArrayName1 = ['test-value'];
    GridArrayName1[0] = GridArrayName1[0].toUpperCase();

    or

    var GridArrayName1 = new Array();
    GridArrayName1[0] = 'test-value'.toUpperCase();

    as well as to

    var GridArrayName1 = [];
    GridArrayName1[0] = 'test-value'.toUpperCase();

    > I even tried assigning it to an object then using the
    > object's "toUpperCase()", but after the assignment the
    > object now longer has that property either??


    toUpperCase() is a native method of
    String objects, not of Array objects.

    However, if you need it, you can add a method
    with that identifier to the Array prototype:

    function array_toUpperCase(/** @optional Array */ a)
    /**
    * Takes input array <code>a</code> or the Array object
    * it is applied to as method and returns a new Array
    * object with all elements in uppercase. Elements that
    * were previously not string values are automagically
    * converted to String.
    *
    * @author
    * (C) 2004 Thomas Lahn &lt;&gt;
    * @partof
    * http://pointedears.de.vu/scripts/array.js
    * @requires
    * types#isArray()
    * @param a
    * Array which elements should be converted.
    * Is used instead of the Array object the
    * function is applied to.
    * @returns
    * A copy of <code>a</code> or the Array object with its
    * elements' value in uppercase. If <code>a</code> has no
    * elements, an empty array is returned.
    * @see
    * http://pointedears.de.vu/scripts/JSDoc/
    */
    {
    if (!a && isArray(this))
    {
    a = this;
    }

    if (isArray(a))
    {
    for (var i = 0; i < a.length; i++)
    {
    a = String(a).toUpperCase();
    }
    return a;
    }
    else
    {
    return new Array();
    }
    }
    Array.prototype.toUpperCase = array_toUpperCase;

    > 'Sup?


    ?


    PointedEars
    ___________
    [1] A *reference* to an Array object can of course be assigned a String
    literal, but then it will not reference that Array object anymore.

    [2] What its valueOf(...) method yields is only the result of its
    toString(...) method. When assigning another value, including
    another Array object/literal to its reference, the previous Array
    object is preserved (until it is garbage-collected) but becomes
    unavailable if there is no other reference to it.
     
    Thomas 'PointedEars' Lahn, Jan 8, 2004
    #7
  8. Mike S. Nowostawsky wrote:

    > I tried using the "toUpperCase()" property to change the value of an array
    > entity to uppercase BUT it tells me that the property is invalid. It seems
    > that an array is not considered an object when it is assigned a text
    > literal??


    An array cannot be assigned a "text literal" (better: string literal)[1]
    for it has no real value.[2] What you have done by using the
    Array(...) constructor is assigning a value to an *element* of the array
    (the first one, to be precise). A special context is required to
    convert the array's "value" (see above) to a String object. Such
    contexts are for example the alert(...) method call or the (String)
    concatenation operation with "+". But note that the toString() method
    is implemented different in different hosts, so do not count on that it
    returns a comma-separated list of the elements' values or so.

    > OW can I change the array value to upper case then?


    Again, an array (here: Array object) does not have a value (at least
    none that you can actually *write* to). I presume you meant: How can
    I change the string value of all array elements to uppercase?

    One is to convert the Array object to a String object (e.g. using
    the Array.join(...) method), uppercase that String (e.g. using its
    toUpperCase(...) method) and split it into array elements again
    (e.g. using its split(...) method). Another is to iterate the array
    elements and uppercase each element. While the former is presumably
    faster, the latter is more reliable as it does not split substrings
    separated by delimiters in element values to separate array elements.

    > What other method exists for arrays?


    RTFM:

    http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/array.html

    > Ex:
    > var GridArrayName1 = new Array();
    > GridArrayName1[0] = new Array ('test-value');
    > GridArrayName1[0] = GridArrayName1[0] .toUpperCase();
    >
    > The above won't work.


    BAD. Borken as designed. Maybe you did not want a
    *two-dimensional* array (because that is what you did)
    but only

    var GridArrayName1 = new Array();
    GridArrayName1[0] = 'test-value';
    GridArrayName1[0] = GridArrayName1[0].toUpperCase();

    which could be shortened to either

    var GridArrayName1 = new Array('test-value');
    GridArrayName1[0] = GridArrayName1[0].toUpperCase();

    as well as to

    var GridArrayName1 = ['test-value'];
    GridArrayName1[0] = GridArrayName1[0].toUpperCase();

    or

    var GridArrayName1 = new Array();
    GridArrayName1[0] = 'test-value'.toUpperCase();

    as well as to

    var GridArrayName1 = [];
    GridArrayName1[0] = 'test-value'.toUpperCase();

    > I even tried assigning it to an object then using the
    > object's "toUpperCase()", but after the assignment the
    > object now longer has that property either??


    toUpperCase() is a native method of
    String objects, not of Array objects.

    However, if you require it, you could add a method with that identifier
    to the Array prototype:

    function array_toUpperCase(/** @optional Array */ a)
    /**
    * Takes input array <code>a</code> or the Array object
    * it is applied to as method and returns a new Array
    * object with all elements in uppercase. Elements that
    * were previously no string values are automagically
    * converted to String.
    *
    * @author
    * (C) 2004 Thomas Lahn &lt;&gt;
    * @partof
    * http://pointedears.de.vu/scripts/array.js
    * @requires
    * types#isArray()
    * @param a
    * Array which elements should be converted.
    * Is used instead of the Array object the
    * function is applied to.
    * @returns
    * A copy of <code>a</code> or the Array object with its
    * elements' value in uppercase. If <code>a</code> has no
    * elements, an empty array is returned.
    */
    {
    if (!a && isArray(this))
    {
    a = this;
    }

    if (isArray(a))
    {
    for (var i = 0; i < a.length; i++)
    {
    a = String(a).toUpperCase();
    }
    return a;
    }
    else
    {
    return new Array();
    }
    }
    Array.prototype.toUpperCase = array_toUpperCase;

    > 'Sup?


    ?


    PointedEars
    ___________
    [1] A *reference* to an Array object can of course be assigned a String
    literal, but then it will not reference that Array object anymore.

    [2] What its valueOf(...) method yields is only the result of its
    toString(...) method. When assigning another value, including
    another Array object/literal to its reference, the previous Array
    object is preserved (until it is garbage-collected) but becomes
    unavailable.
     
    Thomas 'PointedEars' Lahn, Jan 12, 2004
    #8
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    4
    Views:
    714
    Jürgen Exner
    Dec 7, 2004
  2. M. Zeeshan Mustafa

    Re: Text Box Upper Case

    M. Zeeshan Mustafa, Jun 29, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    4,166
    S. Justin Gengo
    Jun 29, 2004
  3. Janice

    lower case to upper case

    Janice, Dec 10, 2004, in forum: C Programming
    Replies:
    17
    Views:
    1,196
    Richard Bos
    Dec 14, 2004
  4. penny
    Replies:
    28
    Views:
    2,637
    Charlton Wilbur
    Mar 10, 2008
  5. BlackHelicopter
    Replies:
    0
    Views:
    537
    BlackHelicopter
    Jan 31, 2013
Loading...

Share This Page