• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2次元連想配列配列の使用方法)

2次元連想配列配列の使用方法

このQ&Aのポイント
  • 2次元連想配列配列の使用方法について教えてください。配列内の要素を参照する方法も教えてください。
  • 2次元連想配列配列を使って指定したURLとテキストを関連付ける方法について教えてください。
  • 配列の要素を参照する際にエラーが発生してしまい、解決方法が分かりません。どうすればよいでしょうか?

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

> aryLink = new Array(2); > for (i = 0; i < aryLink.length; i++) { >   aryLink[i] = new Array(); > } より、0番目と1番目にしか配列(new Array())が確保されていません。 しかし、objTagsAs は2個以上の要素を持っていると思われるため、 > for (i = 0; i < objTagsAs.length; i++) { のループで i が2になったとき、anyLink[2] は配列ではないのに anyLink[2]["URL"] というアクセスをしているため、エラーとなっているのです。 つまり anyLink は、objTagsAs と同じ数の要素に配列を確保しておかなければならないのです。 var objTagsAs = IE.Document.all.tags("A"); var aryLink = new Array(objTagsAs.length);    // objTagsAsと同じ要素数で確保 for (var i = 0; i < objTagsAs.length; i++) {   anyLink[i] = new Array();             // ここで配列を確保   aryLink[i]["URL"] = String(objTagsAs[i])   aryLink[i]["Text"] = String(objTagsAs[i].innerText); }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 多次元配列がさっぱりです。

    var img = ["test01.jpg", "test02.jpg", "test03.jpg", "test04.jpg"]; var name = ["テスト1", "テスト2", "テスト3", "テスト4"]; for (var i = 0; i < img.length; i ++) { document.write('<img src="../img/' + (img[i]) + '" width="132" height="160" border="0" />' + '<br />'); for (var j = 0; j < name.length; j ++){ document.write((name[j])); } } 全然駄目です・・・ 画像があって、画像の下に var name を表示したいんですが、分かりませんでした。分かるかた、教えてください!

  • なぜmatchメソッドがエラーになる?

    こんばんは。 下記スクリプトですが、「★★★」の個所で「オブジェクトでサポートされていないプロパティまたはメソッドです。」となってしまいます。なぜでしょうか?また、回避するにはどうしたらいいでしょうか? やりたいことは、"rd"を含むURLだけリストしないのです。 -- var IE = WScript.CreateObject("InternetExplorer.Application"); var URL = "http://www.yahoo.co.jp"; IE.Navigate(URL); WaitLoad(); var fs = WScript.CreateObject("Scripting.FileSystemObject"); var stream = fs.CreateTextFile("yahoo.txt"); var objTagsAs = IE.Document.all.tags("A"); for (i = 0; i < objTagsAs.length; i++) if (objTagsAs[i].match(/rd/i) != -1) //★★★ stream.Write(objTagsAs[i] + "," + objTagsAs[i].innerText + "\r\n"); stream.Close(); function WaitLoad() { var stat, dstart; stat = 0; while(true) if(stat == 0) { if(!IE.Busy) if(IE.Document.readyState == "complete") { dstart = (new Date()).getTime(); stat = 1; } } else { if(!IE.Busy && IE.Document.readyState == "complete") { if((new Date()).getTime() >= dstart + 3000) break; } else stat = 0; } }

  • 二次元配列に数字をランダムに入れる

    --------------------------- | 2 | 3 | 7 | 4 | 1 || 17 |<横合計> --------------------------- | 6 | 1 | 2 | 3 | / || // | --------------------------- | 1 | / | / | / | / || // | --------------------------- | 2 | / | / | / | / || // | --------------------------- | 3 | / | / | / | / || // | --------------------------- --------------------------- | 14 | / | / | / | / || // |<全合計> --------------------------- <縦合計> このように表示される。 …という処理がしたいのですがどういう処理を書けば良いのかわかりません。 理解した(1)と(2)の乱数発生の文を書いておきます。 *二次元配列を作成* a = new Array(5) for (i = 0; i <= a.length-1; i++){ //1次元 a[i] = new Array(5) for (j = 0; j <= a[i].length-1; j++){ //2次元 a[i][j] = "["+ i +","+ j +"]" var g = ""; document.write(a[i][j]); } } *乱数を100回発生* var z = ""; for(k = 1; k <= 100; k++){ z = Math.round(Math.random()); //発生した乱数をzに代入 } 以上、 よろしくお願いいたします。

  • 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]); } } よろしくお願いいたします。

  • javascriptの2次元配列をソートの仕方

    function word_grouping(data) { var code = data; //先頭についている”code="を除去 code = code.replace("code=",""); var = code.split(","); var alpha =new Array(); alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M']; //2次元配列作成 var array = new Array(); for (i =0; i < alpha.length; i++) { array[i] = [' ','0']: } //グループ名を格納 for( i = 0; i <alpha.length; i++){ array[i][0] = alpha[i] //0番目の項目から順番にグループごとに分ける for( i = 0; i < sp.length; i++){ group = sp[i].substring(0.1); //どのグループに所属しているか調べる for( j = 0; j < alpha.length; j++){ //一致したグループの配列にカウント+1していく if(group == array[j][0]{ array[j][1]++; } } } メモ ・spにはグループのどこかに所属する20個のキーワードが入っていてそれをグループに振り分けている ・グループ分けには”A001”のAだけみて振り分けています したいこと ・arrayに入ったキーワードの数を降順で並び替えたい 分からない所 ・2次元配列をsortする仕方 こんな感じなんです わかる方回答お願いします。

  • 配列に格納した値が保存されない

    DB(Access)から取得した内容を配列に格納し、その内容を取り出すプログラムを 以下のように書いてみました。 whileループ内の alert("ループの中=" + data_array[i]); では配列の中の値が参照できるのですが whileループの外で for(var i=0;i < data_array.length; i++){ alert("ループの外:" + data_array[i]); } 配列の中身を表示させようとしたところdata_array.length の長さが0になっており 配列の中身が参照できない状態です。なにが原因かわかりますでしょうか。 <html> <script language="javascript" type="text/javascript"> function dbSearch() { var sql="select * from URL where flg=0"; var database = dbConnect(); var recordSet = database.Execute(sql); var data_array = new Array(); while (!recordSet.EOF){ data_array[i] = recordSet(0); alert("ループの中=" + data_array[i]); recordSet.MoveNext(); } alert("長さ=" + data_array.length); for(var i=0;i < data_array.length; i++){ alert("ループの外:" + data_array[i]); } database.Close(); return; } //データベースに接続 function dbConnect() { var database = new ActiveXObject("ADODB.Connection"); database.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\\test.mdb;"); return database; } </script> <body> <input type="button" value="DB接続" onclick="dbSearch()"> </body> </html>

  • jspでの二次元配列

    こんにちは。初めて質問させていただきます。よろしくお願いします。 現在javaで作ったプログラムをjspでも使えるようにしようと考えているのですが、 二次元配列がうまくjspで反映されず困っています。 jspに関してはほとんど無知で一から勉強している次第です。 そのためなるべく簡単に、と思い 以下のプログラムを、<% %>の間に入れるだけで動かせないかと思ったのですが エラーが出てしまいました。一次元の配列ならばできたのですが... ちなみに以下のプログラムはcsvファイルを読み込み、 多次元配列に格納していくというものです。 稚拙なプログラムで申し訳ありません... どなたかご教授いただければ幸いです。 import java.io.*; import java.util.StringTokenizer; import java.util.ArrayList; class Dog{  public static void main(String args[]) throws IOException{      String csv = "dognum.csv";      BufferedReader br = new BufferedReader(new FileReader(csv)); String[][] array = new String[100][]; int i = 0; while (true) { String line = br.readLine(); if(line==null) break; array[i] = line.split(","); i++; } for (i = 0; i < 101; i++) { for (int j = 0; j < array[i].length; j++) { System.out.println("["+i+"]["+j+"] = " + array[i][j]); } } } }

  • 多次元配列とfor文について

    javascriptの配列について質問です。 例えば: var arrXXX = new Array(); function samplefunc{ //3次元配列の種類の作成 for (m = 0; m < aaa.length ; m++) { //連想配列作成 arrXXX .push(aaa[m]); } for (j = 0; j < bbb.length; j++) { for (i = 0; i < ccc.length; i++) { arrXXX[aaa[j]] = new Array(ccc.length); arrXXX[aaa[j]][i] = new Array(ccc.length); for (k = 0; k < ddd.length; k++) { arrXXX[aaa[j]][i][k] = eee;     ここでは配列を適切に使える・・・ } } } ここでarrXXXを使いたいが、3次元配列でなくなっている?!  arrXXX[~][0][0]はnullまたはオブジェクトではありません・・・がでます。 } 結局、for文を完全にでてしまうと、せっかくつくった配列がダメになってしまいます。どうすればfor文外で配列を使用できるのか教えてください!

  • 多次元配列のソートがうまくいかない

    多次元配列のソートがうまくいかない 質問失礼します. 以下のような,String型,int型,double型の混在した多次元配列([3][3]の配列)をソートするプログラムを作成しました. このプログラムでは3番目の項目でソートを行っています. 問題点なのですが, 3番目の項目がdouble型の一桁(例えばarray[1][2]が2.0)ならばうまくソートできるのですが, 一つを2桁(例えばarray[1][2]を10.0)にすると何故か先頭の数(10.0の場合1)を基準にソートされてしまっているようです・・・ 配列へのデータの入れ方が間違っているのでしょうか? 原因がはっきりわからず困っているのですが, わかる方いましたらよろしくお願いします. public class Sort_test { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ String[][] array = new String[3][3]; array[ 0 ][ 0 ] = "A"; array[ 0 ][ 1 ] = 2001+""; array[ 0 ][ 2 ] = 9.0+""; array[ 1 ][ 0 ] = "B"; array[ 1 ][ 1 ] = 1001+""; array[ 1 ][ 2 ] = 2.0+""; array[ 2 ][ 0 ] = "C"; array[ 2 ][ 1 ] = 3001+""; array[ 2 ][ 2 ] = 6.0+""; TheComparator comparator = new TheComparator(); // 3番目の項目でソートするように設定 comparator.setIndex( 2 ); // ソート実施 Arrays.sort( array, comparator ); dump(array); } public static void dump( String[][] array ) { for ( int i = 0;i < array.length;i++ ) { for ( int j = 0; j < array[ i ].length;j++ ) { System.out.print( "\t" + array[ i ][ j ] ); } System.out.println(); } } } //多次元配列ソート用クラス class TheComparator implements Comparator { /** ソート対象のカラムの位置 */ private int index = 0; /** ソートするためのカラム位置をセット */ public void setIndex( int index ) { this.index = index; } public int compare( Object a, Object b ) { String[] strA = ( String[] ) a; String[] strB = ( String[] ) b; return ( strA[ index ].compareTo( strB[ index ] ) ); } }

    • ベストアンサー
    • Java
  • actionscriptの配列について

    antionscript初心者ですが、配列について質問があります。 使っているソフトはadobe flash CS3 professionalです。 配列を利用する際に 入力テキストやダイナミックテキストを入れるということはできないのでしょうか? ↓入力テキストの方 Var x: Array=new Array(2); x[0]= ○○.text; x[1]= ●●.text; ↓ダイナミックテキストの方 Var y: Array=new Array(2); y[0]= □□.text; y[1]= ■■.text; そのあとボタンをクリックしたら for(var i : int =0; i<x.length; i++){ if(x[i]>=5){ y[i]="A" }else if(x<5){ y[i]="B" } } というように 入力テキストにいれられた数値に応じてダイナミックテキストに文字を表示させたいのですが、うまくいきません。初心者なので意味不明な質問になっているかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Flash