Javascript連想配列の探索方法とundefinedの使い方

このQ&Aのポイント
  • Javascriptで連想配列の探索方法について疑問があります。prototype.jsを使わずに、標準のJavascriptで連想配列を探索する方法はありますか?また、undefinedの使い方についても確認したいです。
  • Javascriptの仕様について詳しく知りたいです。どのURLを参照すればよいでしょうか?undefinedについても書かれているでしょうか?
  • Javascriptで連想配列の探索方法とundefinedの使い方について教えてください。prototype.jsを使わずに、標準の方法で連想配列を探索することは可能でしょうか?
回答を見る
  • ベストアンサー

Javascriptで、連想配列の探索でindexOfが使えると思って

Javascriptで、連想配列の探索でindexOfが使えると思っていたら、prototype.jsを使っていました。 何も使わず、標準のJavascriptで連想配列を探索する(キーの存在チェック)は可能でしょうか? var a = [ "x":100, "y":200, "z":300 }; a["s"] はundefinedだったので、 if (undefined != a["s"]) { ... } でも構わないのでしょうか? すべてのブラウザでundefinedを返す仕様になっているなら、 undefinedで比較しようと思いますが、 undefinedの使い方は間違いでしょうか? あと、既出で申し訳ないのですが、Javascriptの仕様はどのURLを見ればわかりますか? undefiendのことも書かれているのでしょうか?

  • bazax
  • お礼率5% (12/228)

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

  • ベストアンサー
回答No.1

undefinedとの比較で==,!=を使うのは危険かもしれません。 nullと比較時の際挙動が怪しくなります。 alert(undefined == undefined); // true alert(null == undefined); // true alert(undefined != undefined); // false alert(null != undefined); // false ===,!==を使うと改善されます。 alert(undefined === undefined); // true alert(null===undefined); // false alert(undefined !== undefined); // false alert(null !== undefined); // true 比較方法自体は問題ないと思います。 また、下記のような関数を定義してもいいかもしれません。 var is_undefined = function(o){  return o === undefined; //return typeof o == 'undefined'; 別解 }; a = {x:1} alert(is_undefined(a["s"])); // true a['s'] = null alert(is_undefined(a["s"])); // false

その他の回答 (1)

回答No.2

var a = { "x":100, "y":200, "z":300 }; if( 'x' in a ) alert("yes"); else alert("no"); if( 's' in a ) alert("yes"); else alert("no"); ( 'y' in a ) ? alert("yes"): alert("no") alert( a.hasOwnProperty( 'z' ) ); undefined = true;//これなら?

関連するQ&A

  • 連想配列/オブジェクト? どちらなのか教えて

    ・色々やっている内よく分からないデータになったので、連想配列/オブジェクト? どちらなのか教えてください ■前提オブジェクト var t1 = { key1: '佐藤' , key2: '鈴木' }; ■配列作成 var t2 = new Array(); ■配列にオブジェクトを格納? t2[t1['key1']]=t1['key2']; console.log(t2); //[佐藤: "鈴木"] ■アクセスしてみる console.log("t2['佐藤']"); //鈴木 console.log(t2[0]); //undefined ■質問 ・t2[0]は、なぜundefined? ・t2配列0番目に「佐藤: "鈴木"」というオブジェクトが入っていると思ったのですが… ・t2は、連想配列/オブジェクトの何れでしょうか? ・挙動から推測するとオブジェクトっぽいのですが、外側のかっこが[]でもオブジェクトなのでしょうか? ・外側のかっこが[]は配列で、外側のかっこが{}はオブジェクトと思っているのですが…

  • 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文を使ったほうがいいのかな と思っているのですが、力及ばず詰まっております。 どうかお助けください。 よろしくお願い致します。

  • JavaScriptの連想配列について

    myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C001"] = "C001";    myArray["A001"]["B002"]["C002"] = "C002";  myArray["A002"] = "A002"; JavaScriptの連想配列について質問させて頂きます。 例えば上記のような配列があったとして、値とキーはそのままで "C001" と "C002" の"B002"配列への格納順序だけ入れ替えたい場合、 どのように実装すればよろしいでしょうか? ちなみにキーや値はサンプルで実際にはsort出来るルールはありません。。。 ※入れ替え後のイメージ --------------------------------------------------------------------- myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C002"] = "C002"; ←格納順序が    myArray["A001"]["B002"]["C001"] = "C001";  入れ替わった  myArray["A002"] = "A002"; ---------------------------------------------------------------------

  • PHPの配列をjavascriptへ渡したい

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

    • ベストアンサー
    • PHP
  • 連想配列(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
  • javascriptにおける配列のコピー

    javascriptにおける配列のコピーについて質問です。 調べてみると、配列のコピーは破壊・非破壊の区別が あるのまでは理解しました。 非破壊のコピーをしたいので、 Array.prototype.clone = function(){ return Array.apply(null,this) } を用意して、3次元配列をコピーしたのですが、 コピーした配列のデータを変えたりしたら、 元の配列も変わって(破壊的)ました。。 このclone関数は多次元では破壊的になってしまうのですか? ちなみに、aaa[0~10][0~10][0~10]として、 var bbb; bbb = aaa.clone();で行いました。 教えてください、お願いします!

  • javascript : undefinedについて

    プログラム書き始めの初心者なのですがjavascriptでの「undefined」の表示に困っています。 prototype.jsを使っています。 以下がプログラムの一部なんですが MyPhotoObj= new Object(); //var MyPhotoObj.curUser; //var MyPhotoObj.curPic; var j=0; window.onload= function(){ // command syntax: MyPhotoR.html?room=Demo&user=ikeda&role=s&ctrl=1&w=320&h=240 //alert("MyPhotoOnLoad="+location.href); MyPhotoObj.MyDir=location.href.substring(0,location.href.indexOf("/MyPhotoR")+1); //alert(MyPhotoObj.MyDir); var keys= location.search.split("&"); MyPhotoObj.room=keys[0].split("=")[1]; MyPhotoObj.myName=keys[1].split("=")[1]; MyPhotoObj.curUser=keys[2].split("=")[1]; MyPhotoObj.role=keys[3].split("=")[1]; MyPhotoObj.ctrl=keys[4].split("=")[1]; MyPhotoObj.mess=keys[5].split("=")[1]; var width=53; var height=40;    ・・略・・ デバッグすると、 MyPhotoObj.myName=keys[1].split("=")[1]; の行で keys[1] is undefined というエラーがでます。 なぜでしょうか? 宜しくお願いします。

  • 連想配列からセレクトボックスを生成する

    javascriptで連想配列から特定のキーについてセレクトボックスを生成することはできますか? PHPの例文はあったのですができればjavascriptでやりたいと思っています。 連想配列↓ var profile = [ { name : 'Aさん', tall : '150cm', like : '映画', }, { name : 'Bさん', tall : '160cm', like : '野球', }, { name : 'Cさん', tall : '170cm', like : 'テニス', } ]; があるとして、<body>内に上記のnameだけを抽出したセレクトボックスを作りたいです。 上記の配列の内容はどんどん増えていく予定です。(Dさん、Eさん…というように) ↓めざす完成形 <select id="Namesct"> <option>Aさん</option> <option>Bさん</option> <option>Cさん</option> </select> どうかご教授いただきたく、よろしくお願いいたします。

  • JavaからJavascriptの配列を出力したい

    JavaからJavascriptの配列を出力したいのですが、 appendした要素を区切り文字で区切って返す方法が わかりません。 <% StringBuffer js = new StringBuffer(); js.append("1"); js.append("2"); %> Javaで↑のように格納した後に、 下記のようにJavascriptの配列を出力したいです。 if(a = 1){ val=new Array("1,"2"); }

  • 連想配列と比較させ変換したいのですが

    ファイルから a,h,2,26,f というデータを読み込んで %hash = (1=>'a',2=>'b',‥‥,26=>'z') のような連想配列と比較させ 1,8,b,z,6 となるように、読み込んだものが英字ならキーを、数字なら値を 出力させたいのですが可能でしょうか? お教え願います。

    • ベストアンサー
    • Perl

専門家に質問してみよう