2011-10-26 11 views
0

どのようにして配列を要素として保持するObjectを作ることができますか?私はそれを試しました:オブジェクトthatHolds Arrays JQuery

var dMap = new Object(); 
    ... 
    if (dMap[d.name] === undefined) { 
      dMap[d.name] = p.name; 
     } else { 
      dMap[d.name].push(p.name);// It gives error here 
    } 
    ... 

どうすればいいですか?また、

... 
if (typeof dMap[d.name] == "undefined") { 
     dMap[d.name] = [p.name]; //<-- [ and ] added! 
    } else { 
     dMap[d.name].push(p.name); 
} 

を変数/プロパティが定義されているかどうかをテストするために、undefinedが引き起こし、何によって上書きされる可能性があるため、typeof variable == "undefined"を使用します。

答えて

1

、最初に変数の周りに角括弧を追加することにより、配列を追加破るための比較:dMap[d.name] = [p.name];

undefined = "broken"; 
var obj = {}; 
obj.notdeclared == undefined; //false 
0

変更dMap[d.name] = p.name;、それが動作するはずです。

今のところうまくいかない理由は、dMap[d.name]を文字列に設定してから別の要素をプッシュしようとしたことです。意味がありません。プッシュは配列操作なので、実際に何をしたいのかは、p.nameを含む配列に設定し、追加する要素を追加することです。

0

はたぶんあなたが書くためのもの:

if (dMap[d.name] === undefined) { 
    dMap[d.name] = [p.name]; // IMPORTANT CHANGE HERE 
} else { 
    dMap[d.name].push(p.name); 
} 

(括弧表記で)この方法では、おそらくするつもりのようにあなたは、配列を作成しています。

関連する問題