Chaya, your issue is actually stemming from the fact that "[]" is part of the name.
While there are provisions to turn forms and their named elements into JS-accessible objects automatically, there are no provisions to understand which elements are intended to be arrays, versus non-arrays, as that's a server-side distinction: ?baz[]=1&baz[]=2
.
If you were to ask for form1["baz[]"];
you should get a list of all elements named "baz[]"
.
From there, if you were to say form1["baz[]"][0];
you should get the first element named "baz[]".
You can, of course, write some parsing magic to automatically find all elements with "[]" in their names and append the "baz" as an array of the form, filled with all elements named "baz[]". And at that point you could do exactly what you were looking to do, before.
Whether or not that's overkill depends on what you're doing.
But simply writing form1["baz[]"][i]
in your loop shouldn't be much more time-consuming than what you've currently got.