Mike 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??
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 <
[email protected]>
* @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;
?
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.