<HTML><HEAD>
<!--
-----------------
Strings as Arrays
-----------------
-->
<SCRIPT LANGUAGE="JavaScript"><!-- hide from old browsers
/*
THE JAVASCRIPT COOKBOOK by Erica Sadun, webrx@mindspring.com
Copyright (c)1998 by Charles River Media. All Rights Reserved.
This applet can only be re-used or modifed by license holders of the
JavaScript Cookbook CD-ROM. Credit must be given in the source
code and this copyright notice must be maintained. If you do
not hold a license to the JavaScript Cookbook, you may NOT
duplicate or modify this code for your own use.
Use at your own risk. No warranty is given or implied of the suitability
of this applet for any specific application. Neither Erica Sadun nor
Charles River Media will be held responsible for any unwanted effects
due to the use of this applet or any derivative.
*/
//------------------STRING-ARRAY UTILITIES-------------------
// Find the substring at index n, counting 0 to n
function doIndex(aString, n)
{
var str=""+aString
// Count until the correct index
for(var i = 0; i < n; i++)
{
var where = str.indexOf(':', 1)
str = str.substring(where+1, str.length)
}
// Lop off the end of the string
return str.substring(0, str.indexOf(':'))
}
// Month string
var months = "January:February:March:April:May:June:July:"+
"August:September:October:November:December:"
function choose()
{
document.forms[0].month.value=
doIndex(months, document.forms[0].input.options.selectedIndex)
}
<!-- done hiding --></SCRIPT></HEAD>
<BODY bgcolor="ffffff" link="0000ff" vlink="770077"
onLoad="document.forms[0].input.focus();document.forms[0].input.select()">
<FONT COLOR="007777"><H1><IMG SRC="../GRAFX/UTENS.JPG" WIDTH=80 HEIGHT=50
ALIGN = CENTER>Treating a String as an Array</H1></FONT>
<FONT COLOR="770000">
Sometimes it is easier to store information in strings
rather than arrays. This saves lines of code and increases
maintainability. This example
shows one way to store month names in a string and index
them.
</FONT></BLOCKQUOTE>
<BR><BR>
</SCRIPT><CENTER><FORM><TABLE BORDER=1>
<TR>
<TD align=center colspan=3><input type="text" name="month" value=""
size=12">Month</TD>
</TR>
<TR>
<TD align=center colspan=3>Number:
<SELECT NAME="input" SIZE="1">
<OPTION>1
<OPTION>2
<OPTION>3
<OPTION>4
<OPTION>5
<OPTION>6
<OPTION>7
<OPTION>8
<OPTION>9
<OPTION>10
<OPTION>11
<OPTION>12
</SELECT><p>
</TD>
</TR>
<TR>
<TD align=center colspan=3>
<input type="button" value="Lookup Indexed Month" onClick="choose()"></TD>
</TR>
</TABLE></FORM></CENTER>
<br><br>
<FONT COLOR="007777"><H2>Discussion</H2></FONT>
<FONT SIZE=4>
Reuse this routine for any data-collection strings. This routine
may be somewhat awkward, but it collapses data information into
a compact, convenient representation and uses a minimum of extra
memory.
</FONT>
<FONT COLOR="770000"><PRE>
// Month string
var months = "January:February:March:April:May:June:July:"+
"August:September:October:November:December:"
// Find the substring at index n, counting 0 to n
function doIndex(aString, n)
{
var str=""+aString
// Count until the correct index
for(var i = 0; i < n; i++)
{
var where = str.indexOf(':', 1)
str = str.substring(where+1, str.length)
}
// Lop off the end of the string
return str.substring(0, str.indexOf(':'))
}
function choose()
{
document.forms[0].month.value=
doIndex(months, document.forms[0].input.options.selectedIndex)
}
</PRE></FONT>
<h5>Copyright ©1996 by Charles River Media, All Rights Reserved</h5>
</BODY>
</HTML>