要素の値をコンマ区切りで書いたものから配列を生成できます。各要素への参照は角括弧に番号を入れたもの([0]のような)を使って行います。いうプロパティで得られます。この他の書き方もあります。次の3つは同じ配列を作ります。Array("mike","tama","kuro");確実には知りませんが、長年の観察によると配列(Array)が、いわゆる連想配列に拡張(あるいはマップ様のものと融合)して、オブジェクト指向をとりこんでオブジェクトの一つとなったものと思います。配列とオブジェクトとは厳密には別という時代がありました。現在(2018年)は同じもののようですが、歴史的な理由から生成方法がいくつもあるようです。本当に同一かは実装によるのでしょうが、今回の使用範囲では使い方に差はありませんでした。後述の要素数を指定した生成では文法上の違いがあります。特筆すべきは、要素の種類が混在でも構わないことです。確認することができます。javaでもObjectを入れるぞと宣言すればできないことはないですが、普通、文字列をいれる配列とか整数を入れる配列とか決めて使います。それに慣れているとちょっと驚きです。空の配列をつくる生成の時に要素が空であれば、要素数0の配列ができます。[];要素数が0でも、番号を指定して代入すると要素数が勝手に増えてくれます。読んで二行目に書き写しています。"111"は読まないので、kara[1]には値が代入されません。htmlの特質と考えていいでしょうが、テキストノードから読んだものは数字だけでも「文字列」として扱われます。なることから確信できます。結果から、次の事柄が確認できます。(1)空の配列を作ったときの長さは0だが、[3]に代入すると長さは4になること、(2)代入されない要素はundefinedになること、(3)テキストノードから読んだデータは文字列になることこの他の書き方もあります。次の3つは同じ配列を作ります。256;他の言語では配列は先に使う分だけ要素数を確保するもの。Javascriptでは特に必要ではない。初期値をundefined以外にしたい場合は、次項。プロパティで要素数が256になっていることを確認しています。Dの[256]は要素が256という数値であるような要素数1の配列ができてしまうので、間違いです。要素数と初期値を指定する配列たくさんのカウンタを配列に用意して、見つかった数を数えたい場合、最初に全部を0クリアして、+1していくことがあります。このような時配列の要素の初期値を設定する必要があります。fill()メソッドを使って最後の要素の値Aは配列の要素数を指定してから、配列の長さ分だけforで0を代入します。Bは要素数の指定をせずにforで0を代入します。forの中で指定した数が要素数になります。A2はfill()というメソッドを使って2を全部の要素に代入しています。表にはすべて最後の要素の値を表示しています。0,0,2が正解です。fill()メソッドが使えない環境もありますので公開するならforがお勧めです。他の言語を使っているとまだ入れ物のない要素に代入するのには抵抗がありますし、将来的にfill()を使うことを考えると.lengthで長さ指定の後、.fill()ということになります。プロパティなので()なし、.fill()はメソッドなので()ありです。内部事情を知っていると納得はできますが、値を設定してリ引き出したりするメソッドも作れるので、違いを気にしなくていい言語設計になっていかないかなと思っています。繰り返し機構for文は多くの言語で使える王道です。いうものは廃止されています。古い情報には注意(といっても昔から使用には要注意でした)。できていたということなので、ちょっと使ってみます。⇨for文と並べて同じことをさせてみました。forEachの第一引数のelementは配列の要素ひとつ,第二引数indexは番号です。引数だけでも呼べます。2015年あたりに標準化されているので、まだ未対応のブラウザが残っている可能性があります。.fill()に未対応なブラウザもこれは大丈夫でしたが、まだ使わないほうが無難かもしれません。.forEach()メソッドの引数はコールバック関数と呼ばれるものですが、関数に渡される引数は配列の要素が一つだけなので、次の要素を関数が知るためには問い合わせなければならないというイメージなのだと思います。実際にはマルチコアCPUで並行処理をするための機能だと思います。すると関数側では自分の仕事が終わって値を返せば、次のデータは気にしないことになりますから、コールバックしませんね。forEachメソッド前項のforEachメソッドは、});が美しくないと思います。コールバック関数を引数に取るということなので、この関数を別に書けば美しくなると思って書いてみたのが次です。forEachメソッドtds[0]tds[1]tds[2]tds[3]⇨outputNamesToTDというのが、ここでのコールバック関数名です。この関数は引数が(要素[,番号[,配列]])と決まっていますから、仮引数も書きませんし、他の引数を与えることもできません。forEachメソッドにoutputNamesToTDという名前を与えて、「この名前の関数を配列要素などを引数にして呼んでね」という指示をしているのです。こちらがコールバックの名前の由来でしょうか。「バック」ではないような気がします。ここで問題が生じます。outputNamesToTDと名前をつけずに、forEachの引数内に直接関数を書いていたときには、tdsつまり出力先のtd要素の配列を直接参照できたのですが、別のfunctionを書いたために参照できなくなります。そこで登場するのがforEachの第二引数(ここではtds)です。この仕組みがないとtdsはグローバル変数にするか、outputNamesToTD内にgetElementById("test07")部分から全部書いて、呼ばれるたびに算出することになってしまいます。ありがたい仕組みですが、一つしか指定できませんし、苦し紛れのような気もします。リストとしての配列Javaなどでは配列とは別にListがありますが、Javascriptでは配列をリストの様に使うことができます。pushは配列の最後に要素を追加し、配列の長さを返します。popは配列の最後の要素を削除し、削除した要素の値を返します。pushで配列に取り込んでpopで取り出して書き出します。仕組みを理解するために、一回のpushごとに戻値と配列を書いていき、4つ読んだら一回のpopのごとに戻値と配列を書いています。pushとpopを組み合わせていますが、通常の配列として角括弧の記法を使って代入したり、参照することもできます。配列に取り込んでから取り出して書き出します。加えて、shift,unshiftを使います。unshiftは配列の最初に要素を追加し、配列の長さを返します。shiftは配列の最初の要素を削除し、削除した要素の値を返します。push,pop,shift,unshiftは任意に組み合わせて使用できます。全部の組み合わせでやってみます。ここで、三項演算子(条件?trueの時の式:falseの時の式)も使いました。javascriptでは条件演算子と呼ぶようです。ifの中で変数を定義すると外ではアクセスできませんから、これは便利です。配列中の値を探して削除indexOf("検索値")は配列中の要素で"検索値"と一致するものを探して位置(index)を返します。見つからない時は-1です。indexOf("検索値",開始位置)という使い方もできます。一つ見つかったらそれ以上は探しません。splice(開始index,長さ)は、開始indexから、長さだけの要素を削除して、削除した要素の配列を返します。元の配列は書き換えられて要素数が減ります。ここのプログラムでは3項演算子の中に書かれているのでわかりにくいかもしれません。split("区切り文字")は文字列を区切り文字で区切って、分けたものを要素にした配列を生成して返します。使用例を作る都合で加えました。削除する要素を指定してください。nodeValueとして配列を指定するとコンマ区切りにして結合してくれるので、楽にプログラムできています。使わなくてはなりません。spliceは「切り貼り」の意味なので、貼ることもできます。リストのリストリストは関数を呼び出す時の引数や戻値にすると便利なことが多いですが、リストのリストを必要とする場面がありました。後にJavaで同様のことをしようとして困ったことがあります。Javascriptは柔軟にあっさりできてしまいます。必要があってというのはこんな場面です。3つのリストがあります。要素数が増減するかもしれないのでリストです。このリストが3つあって、これを別の関数に引数として渡します。現在はリスト3つですが将来的に増える可能性もあるので、こちらもリストにします。[basename,sauce,topping];basename,sauce,toppingという分類名は配列やリストでは失われて番号になりますが、実際に作成したのは数学関係のプログラムでしたので、0,1,2という連番で構いませんでした。必要なら配列の代わりにオブジェクトを使います。イチゴ練乳アイスbasenameに"かき氷"を加えたければ、dessertmenu[0].push("かき氷");drinkメニューを加えたければ、dessertmenu.push(["コーヒー","紅茶","ソーダ"]);で可能です。dessertmenu;}やってみます。例(!!)で、配列に入るのは参照であることがわかります。安達順一(2018-10-08)https://dabiyone.com/。