2011-01-12 6 views
0

私はJavaScriptマップを使用してキーと値を保存しています。後で、指定されたキーがマップに存在するかどうかを確認しますが、正しい結果が得られることもありますが、そうでない場合もあります。私はconsole.log(mapname)を使って地図を印刷しようとしましたが、すべてのキーを表示しますが、特定のキーが存在するかどうかを確認しようとすると、間違った答えが出ることがあります。可能問題になることが何javascriptマップ/オブジェクトで異常な動作が発生する

// following code is called n times in loop with different/same vales of x 
myMap : new Object(); 
var key = x ; // populated dynamically actually 
myMap[key] = "dummyval"; 
if(myIdMap[document.getElementById("abc").value.trim()] != null) 
    alert('present'); 
else 
    alert('not present'); 

は、次のコードを使用していますか?英数字/整数値をキーとして使用できますか?

+0

は、私たちはあなたのコンテキストを見ることができますこれを使っていますか? 'myMap'はどこに定義されていますか(オブジェクトリテラルのように見えます)? 'x'はどのように作成されましたか(それはグローバルなのでしょうか、何とか引数として渡されますか?また、同じ値が 'x'として渡されることもあると言っていますが、' x'の古い値に関連付けられた結果の値は、あなたがそれを行うときに破壊されます。しかし、実際にはより詳細な情報を使用することができます。このような問題を診断するのは難しいです。 – Reid

+1

このコードにはいくつかの構文/参照エラーがあります。使用している実際のコードを投稿できますか? – Stephen

答えて

-1

私はあなたが一時的なテーブルやセッションやクッキーのようなオブジェクトに将来の回復のためのキーを格納する必要があると思う。 mymap [key]にx位置の値を動的に格納しますが、新しい値をロードして上書きするたびに有効になります。もし間違ってやって何か..

+0

返信してくれてありがとう、しかし、私はそれが私に適切なキーを示すマップを印刷し、そのキーが存在するかどうかを確認する問題は正しく動作しません。 – akshay

+0

詳細で問題を説明することができますので、私はそれを確認しました.. –

+0

問題は、存在するキーのために "not presnt"を出力します – akshay

0
var myMap = {}; 
// ... 

//simulating your inner loop; is this close enough? 
//Note: A MacGuffin is a plot device to move the story forward. 
// Like a time machine, or a space ship. 
for (var key in macGuffin) { 
    myMap[key] = macGuffin.processItem(key); 
} 

// ... 
var myKey = document.getElementById("abc").value.trim(); 
//Note the use of !==; false == null == 0 == '', but null only === null 
if (myMap[myKey]!==null) 
//Better? (typeof myMap[myKey] != 'undefined') 
    console.log('present'); 
else 
    console.log('not present'); 
0

では、次のコードに示すようにキーで格納されている値は、nullになる可能性があることを認識しております確認してください:

a = { 
    "mykey": null 
} 

for (x in a) { 
    if (a[x] == null) { 
     alert(x + " is null!"); 
    } 
} // produces a single alert: "mykey is null!" 
関連する問題