<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>ecma配列</title><revhistory><revision><revnumber>9</revnumber><date>2012-10-18 12:00:08</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2012-10-18 11:58:08</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2012-10-16 04:16:58</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2012-10-16 01:35:11</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2012-10-16 01:22:47</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2012-10-16 01:14:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2012-10-16 01:07:58</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2012-09-08 13:03:20</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2012-09-08 12:58:51</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>ECMAscriptの配列</title><para>配列にも型はありません。 各要素にどんな型でも入れることができます。 要素によって型がちがってもかまいません。 </para><!--rule (<hr>) is not applicable to DocBook--><section><title>配列の生成</title><section><title>配列の大きさを指定して作成</title><itemizedlist><listitem override="none"><screen><![CDATA[var a = new Array(10);]]></screen></listitem></itemizedlist></section><section><title>配列の大きさを指定しないで作成</title><itemizedlist><listitem override="none"><screen><![CDATA[var a = new Array();]]></screen></listitem></itemizedlist></section><section><title>要素の値を指定して作成</title><itemizedlist><listitem override="none"><screen><![CDATA[var a = [1,1,2,3,5,8];]]></screen></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>配列要素</title><para>配列の要素には a[i] の形式で参照できる。 インデックスは 0 から始まる。 </para><para>配列のサイズより大きいインデックスを指定して参照すると undefinedが返される。 エラーにはならない。 </para></section><section><title>配列の大きさ</title><para>配列の大きさは length プロパティで得ることができる。 </para><section><title>例</title><itemizedlist><listitem override="none"><screen><![CDATA[$ rhino
js> var a = new Array();
js> a[0]=10;
js> a[1]=11;
js> print( a.length );
2
js> print( a[0] );
10
js> print( a[5] );
undefined]]></screen></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>ループの書き方</title><para>配列のすべての要素について処理を行うときのループの書き方はつぎのようになります。 </para><para>通常は書き方(1)を使います。 </para><section><title>書き方(1)</title><itemizedlist><listitem override="none"><screen><![CDATA[for (i=0; i<a.length; i++) {
    print( a[i] );
}]]></screen></listitem></itemizedlist></section><section><title>書き方(2)</title><itemizedlist><listitem override="none"><screen><![CDATA[for (i in a) {
    print( a[i] );
}]]></screen></listitem></itemizedlist><para>書き方(1)の場合にはすべての要素についてループ本体が実行されます。 </para><para>書き方(2)の場合には存在する要素についてループ本体が実行されます。 </para><para>例えば配列 a が </para><itemizedlist><listitem override="none"><screen><![CDATA[var a = [1,2,,,5];]]></screen></listitem></itemizedlist><para>のとき、a.length は5で、a[2],a[3] は undefined です。 </para><para>書き方(1)の実行結果は </para><itemizedlist><listitem override="none"><screen><![CDATA[1
2
undefined
undefined
5]]></screen></listitem></itemizedlist><para>書き方(2)の実行結果は </para><itemizedlist><listitem override="none"><screen><![CDATA[1
2
5]]></screen></listitem></itemizedlist><para>となります。 </para><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>例</title><para>配列のすべての要素の和を求める。 </para><itemizedlist><listitem override="none"><screen><![CDATA[var a = [1,1,2,3,5,8];
var sum, i;
sum = 0;
for (i=0; i<a.length; i++) {
    sum = sum + a[i];
}
print( sum );]]></screen></listitem></itemizedlist></section></section></article>