JavaScript連想配列の作成方法と自動化のためのfor文の使い方

このQ&Aのポイント
  • JavaScriptで連想配列を作成する方法についてご教授ください。
  • 現在、PHPからJavaScriptにデータを渡して連想配列化しようとしていますが、うまくいきません。
  • 自動化のためにfor文やfor in文を使った方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

javascript 連想配列

初めて連想配列で処理を行っております。いろいろグーグル等で調べましたが、どうしてもできないので、ご教授頂けますでしょうか。 phpからjavascriptにデータを渡し、連想配列化する必要がありまして、以下の通りにやってみました。配列化は自動化したく、for文でこのようにしてみました。phpの大部分は少々長いので省きますが、ざっとこんな感じです。 var place = <?PHP echo $place ?>; //東京、大阪、名古屋 var address = <?PHP echo $add ?>; //東京都、大阪府、名古屋市 var Data = new Array();   for(i=0;i<place.length;i++){ Data[i].push({add1:place[i] , add2:address[i]});   } alert(Data[0]); ------------------------------- 上記の方法ですと、placeとaddressには正しく値はphpから渡されるのですが、肝心なDataはなにも出力されません。エラーもなく、まっさらです。 理想系は、以下の方法の通りにしたいと思っております。 下記はフリーウェアの中身を今回の案件に手直ししたものです。 Data = [{  add1: "東京",  add2: "東京都" }, {  add1: "大阪",  add2: "大阪府" }, {  add1: "名古屋",  add2: "名古屋市" }]; この場合と同じ結果が出力されれば完成なのですが・・・ 例えば、Data[0]をalertすると、「object object」と出力されます。 現在は3件で開発を行っておりますが、今後はどんどん増えていくので、自動化させるためにfor文か、for in文を使ったほうがいいのかな と思っているのですが、力及ばず詰まっております。 どうかお助けください。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 data = [ {add1:"東京",add2:"東京都"},{add1:"大阪",add2:"大阪府"}]; data[0].add1 data[0].add2 と取得したいのであれば以下のような感じになると思います。 window.onload = function() { var place = new Array ( '東京', '大阪', '名古屋' ); var address = new Array ( '東京都', '大阪府', '名古屋市' ); var data = new Array(); for ( i = 0; i < place.length; i ++ ) { data.push ( { add1:place[i], add2:address[i] } ); } alert ( data[0].add1 ); // 「東京」が表示される alert ( data[0].add1 ); // 「東京都」が表示される };

teckiko
質問者

お礼

ありがとうございます! 頂いたプログラムをそのまま移植したらうまく行きました。 現在、上記を元にさらに改造しているところです。 data.push ( ~~~~ 頂いたように、dataを配列表記しない方法も試したのですが、うまくいかなかったので、違うと思っていましたがやはり合っていたのですね。 凡ミスが多くて、ご迷惑おかけしております(_ _) またよろしくお願い致します。

その他の回答 (2)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。No.1です。 度々すみません。 alert ( data[0].add1 ); // 「東京都」が表示される ではなく alert ( data[0].add2 ); // 「東京都」が表示される でした。

teckiko
質問者

お礼

別途お礼をさせて頂きました。 ありがとうございました。

  • utun01
  • ベストアンサー率40% (110/270)
回答No.2

alert(Data[0].add1); alert(Data[0].add2); みたいな感じではないでしょうか。 ※未検証です。

teckiko
質問者

お礼

alertの方法も間違っていましたね(汗 原因はもっと根本でしたが、連想配列のalert方法も勉強になりました。ありがとうございました。

関連するQ&A

  • 連想配列(PHP 対 JavaScript)

    こんにちは。質問をさせてください。 PHPでOracleのデータを取得してそのデータを連想配列に格納するとします。 /------- PHP内でのソース -----------------/ (例) $Count:検索データ数  for($cnt=0;$cnt<$Count;$cnt++){ $data[$cnt] = "取得したデータ";  Fech(次のレコードを取得する); } 上記で取得した連想配列の値をJavaScriptでしようしたいのですが うまくいきません。 JavaScriptではArrayに取得したデータを格納したいのです。 (例) /-- JavaScript内のソース Afor2=new Array("取得data1","取得data2",・・・"最後の取得data"); としてHTMLの何かのイベント時にしようしたいと考えています。 今僕は以下のような動きをしたいです。 /----以下、JavaScriptでの記述-----------------/ var New_Array=new Array(5); for(i=0;i<<?=$Count?>;i++){ document.form.cmb_box.options[i] = new Option(<?=$data[i]?>, i); } のようなことをしたいのですが。 (もちろん上記はだめですが・・・) 質問がわかりにくくて大変もうしわけありませんが、 アドバイス、質問などよろしくお願いいたします。

    • 締切済み
    • PHP
  • 連想配列の作成について

    array(01 => 01, 02 => 02, 03 => 03, 04 => 04, 05 => 05) とういような連想配列を、PHPで作成したいと考えていますがうまくいきません。 (for文を使ってループしてみましたがうまくいかなかったです。) どうぞ、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 他スクリプトの連想配列を扱いたい

    a.phpにある特定の連想配列を、b.phpで扱いたいのですが どのようにすれば良いのでしょうか?? 簡略化して書きますが、a.phpに $a[japan][kantou][] = "東京"; $a[japan][kantou][] = "神奈川"; $a[japan][kantou][] = "千葉"; $a[japan][kansai][] = "大阪"; $a[japan][kansai][] = "兵庫"; $a[japan][kansai][] = "京都";    ・    ・    ・ (簡略化していますが実際はもっと複雑な連想配列です。) 上記のような連想配列があり、 b.phpで、$a[japan][kansai]の配列を扱いたいのです。 b.phpで、requireを使ってa.phpを読み込んでも a.php内の他の実行処理までされてしまうのでNG。 扱いたい連想配列をtxtなどに出力し、 b.phpでそのtxtを読み込んで扱う事も考えたのですが、わざわざ出力するのも・・・ なのでNG。 globalで、他スクリプトの特定の連想配列を読み込む事はできないですよね・・・? 何かいい方法があればご教授頂けたらと思います。

    • ベストアンサー
    • PHP
  • PHPの配列をjavascriptへ渡したい

    PHPの配列をjavascriptの配列に渡したいのですがやり方がわかりません。 変数の渡し方ならわかるのですが配列はどう渡せばいいのでしょうか? for文を使って渡せばいいと思うんですがどうやればいいか分かりません。 <?php $filedata=file("data.txt");//javascriptに渡したい配列 ?> <script language="javascript"> var a=new Array();//PHPの配列をこの配列に入れたい </script> 何方か教えてください。

    • ベストアンサー
    • PHP
  • 思うような連想配列ができない・・

    省略して説明します。 関東,東京,神奈川,千葉 中部,愛知,静岡,岐阜 関西,大阪,兵庫,京都 というCSVデータがあり これを以下のような、連想配列にしたいのですがどうすればよいのでしょうか?? Array (   [0] => Array    (      [0] => 関東      [1] => 東京      [2] => 神奈川      [3] => 千葉    )   [1] => Array    (      [0] => 中部      [1] => 愛知      [2] => 静岡      [3] => 岐阜    )   [2] => Array    (      [0] => 関西      [1] => 大阪      [2] => 兵庫      [3] => 京都    ) ) --------------------------------- CSVデータを、feofで終端まで読み込み feofで一行ずつ取得 explodeでコンマで分解まではできるのですが 上記のような、連想配列ができません・・。 ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • stdClass Objectを連想配列のように個別に取り出したい。

    $aに連想配列が入っているとして、 print "<pre>";print_r($a);print "</pre>";   ↓ array (  [Return] => array   (    [data] => あいうえお   ) ) このように連想配列の入った変数から データを個別に取るとき このように、配列名を並べると print $a['Return']['data']; ↓ あいうえお と、個別に取り出せますが、 あるデータをprint_rすると、 stdClass Object (  [Return] => stdClass Object   (    [data] => あいうえお   ) ) というふうに"stdClass Object"として出力されてしまいました。 stdClass Objectのデータを個別に取り出したいのですが 連想配列のような記述だとうまく取り出せません。 stdClass Objectのデータはどのようにして個別に取り出すのでしょうか?

    • ベストアンサー
    • PHP
  • 連想配列の初期化

    UNIXでAWKの連想配列を使っています。 連想配列を処理の途中で初期化したいのですが、どうすれば良いのでしょう? とりあえず今は以下のように初期化をしています。 for ( i in a ){a[i]="";} しかし、できれば a=null という感じに一発で初期化をしたいのです。

  • Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。

    Javascriptで二次元配列で高次元の配列サイズを取得する方法を教えてください。 var data = [ [1,2,3], [4,5,6], [7,8,9] ]; for (var i = 0; i < data.length; i++){ for (var j = 0; j < data[i].length; j++){ <--- ここで lengthのオブジェクトがNullというエラーになります。 alert(data[i][j]); } } よろしくお願いいたします。

  • 連想配列の配列の使い方

    C言語でいうところの構造体の配列(要素は"hoge"と"fuga"のみ)を perlで表現する場合、連想配列の配列にするのが一般的でしょうか? 以下の様なソースコードなのですが、perlらしさが失われている気がします。 perlらしく書くとしたらどう書くのが良いでしょうか? [ソース] @list; #この配列の要素に連想配列を入れる sub input{ #list.txtの中にはhogeとfugaの値がカンマ区切りで記入されている open(IN, "list.txt");  $i = 0; while ($xx = <IN>) { ($list[$i]{"hoge"}, $list[$i]{"fuga"}) = split /,/, $xx; $i++; } close(IN); } sub output{ for($i = 0; $i <= $#list; $i++){ print $list[$i]{"hoge"}, $list[$i]{"fuga"}; } }

    • ベストアンサー
    • Perl
  • 配列の中の一部を削除する方法がわかりません。

    配列の中の一部を削除する方法がわかりません。 Javascriptに、連想配列はないと、どこかのサイトで書いてありましたが やりたいことは、ある配列(連想配列)というより、オブジェクト?があり、 そこにキーと対応すrる値があるデータがあります。 キーを手がかりに、削除して一部のデータを削除する書き方を教えて欲しいです。 例えば var a = new Array(); for (var i = 0; i < 10; i++) { a[i] = [i]; } // この段階では、0=>[0], 1=>[1] ... 9=>[9]のデータがありますが、 // a[3] a[5] a[8]のデータをここで削除したい。 // 今回は、数値がキーですが文字列の場合も可能でしょうか? ??? for ( var i = 0; i < a.length; i++) { alert(a[i]); } // 7個のデータが表示される。 よろしくお願いいたします。