i'm writing a function to recursively report the values in an array (see the
code below). the problem i'm having is that it starts into the main array just
fine, it gets into a nested array through a recursive function call...but then
when that value returns, my index in the for loop (variable "i") appears to
have been reset. it started as 11 but then was empty when the recursive call
returned. can anybody tell me what i've done wrong? here's the output:
spit out array
spitting out 'arr'
array:arr contains 11 elements.
loop i=0
number:argname.0=1
loop i=1
number:argname.1=2
loop i=2
string:argname.2=foobar mania only on sundays
loop i=3
number:argname.3=1.23456789012346e+19
loop i=4
number:argname.4=2147483647
loop i=5
number:argname.5=1.1
loop i=6
number:argname.6=2147483648
loop i=7
array:argname.7 contains 2 elements.
loop i=0
string:argname.0=first sub array
loop i=1
string:argname.1=second sub array
function SpitOutArray(arg, argname) {
var tabPrefix;
if (arguments.length == 3) {
depth = arguments[2];
for(j=0; j<depth; j++) {
tabPrefix += "\t";
}
} else {
trace("spitting out '" + argname + "'");
}
if (typeof(arg) == "object") {
intSize = arg.length;
trace(tabPrefix + "array:" + argname + " contains " + intSize + "
elements.");
depth++;
var i;
for(i=0; i<intSize; i++) {
trace("loop i=" + i);
SpitOutArray(arg[i], "argname." + String(i), depth);
}
} else if (typeof(arg) == "string") {
trace(tabPrefix + "string:" + argname + "=" + arg);
} else if (typeof(arg) == "number") {
trace(tabPrefix + "number:" + argname + "=" + arg.toString());
} else if (typeof(arg) == typeof(undefined)) {
trace(tabPrefix + 'empty element:' + argname);
}
}
// define an array--NOTICE THAT I SKIPPED INDEX 9 INTENTIONALLY
var arr = Array();
arr[0] = 1;
arr[1] = 2;
arr[2] = "foobar mania only on sundays";
arr[3] = 12345678901234567890;
arr[4] = 2147483647;
arr[5] = 1.1;
arr[6] = 2147483648;
arr[7] = new Array();
arr[7][0] = "first sub array";
arr[7][1] = "second sub array";
arr[8] = "";
arr[10] = "last item";
SpitOutArray(arr, "arr");