2016-06-15 10 views
0

私は配列を書いていますが、値はできません。 memberData [0]は常に定義されません。正しい値(1,2)を得るには?JavaScript配列が未定義で、カレンダーに表示する方法

正しい値を取得したら、forループをカレンダーに表示する必要があります。私は絵のようにforループの方法で表示する方法を知らない。助けてください!

Example

以下の私のコード:

  var memberList = {"member": 
      { 
       "1":"1,2", 
       "2":"1,2", 
       "3":"1,2", 
       "4":"1,2", 
       "5":"1,2", 
       "6":"1,2", 
       "7":"1,2", 
       "8":"1,2", 
       "9":"1,2", 
       "10":"1,2", 
       "11":"1,2", 
       "12":"1,2", 
       "13":"1,2", 
       "14":"1,2", 
       "15":"1,2", 
       "16":"1,2", 
       "17":"1,2", 
       "18":"1,2", 
       "19":"1,2", 
       "20":"1,2", 
       "21":"1,2", 
       "22":"1,2", 
       "23":"1,2", 
       "24":"1,2", 
       "25":"1,2", 
       "26":"1,2", 
       "27":"1,2", 
       "28":"1,2", 
       "29":"1,2", 
       "30":"1,2" 
      } 
     }; 
     var memberData = memberList["member"]; 
     var res = memberData[0].split(","); 
     var am = 'AM' + '-' + res[0]; 
     var pm = 'PM' + '-' + res[1]; 
+5

主な問題は、それが配列ではないということです。それはオブジェクトです。とにかく、それが配列であっても、あなたは項目0を定義していないので、なぜ 'memberData [0]'は未定義ですか? – JJJ

+0

あなたが望むものは絶対に明確ではありません。 – Adam

+0

Juhana:ああ...私を訂正してくれてありがとう。それはオブジェクトです、それを持っています! – user1735815

答えて

0

ここでは、あなたがmemberList

for(i=0;i<Object.keys(memberList.member).length;i++) 
    { 

     var num = Object.keys(memberList.member)[i]; 

     var memberData = memberList["member"][num]; 

     //alert(memberData); 
     var res = memberData.split(","); 

     alert("AM "+res[0]+" & PM "+res[1]); 
    } 
+0

downvote?何のために ? –

0

memberを望んでいたforループの配列ではありません、それはオブジェクトのです。 memberを配列に変更する必要があります。

var memberList = {member: [1, 2, 3, ...]} 
0

基本的に、配列インデックスを持つオブジェクトキーにアクセスしています。オブジェクトの値にアクセスするには、次のようにあなたのユースケースがある実装に対応するキー

デモコードを使用する必要があります -

var memberData = memberList["member"]; 
var keys = Object.keys(memberData); 

for (var key in keys) { 
    var res = memberData[key].split(","); 
    var am = 'AM' + '-' + res[0]; 
    var pm = 'PM' + '-' + res[1]; 
} 

このコードは、オブジェクトmemberData内の各値にアクセスします。

0

キーを持つオブジェクトは1つに基づいていますが、配列はゼロに基づいているようです。構造体を変更せずにアクセスするには、キーに1つだけ追加して、必要なアクセスを行います。

しかし、私は、配列のような別のデータ構造を使うことを提案しています。

var memberList = { "member": { "1": "1,2", "2": "1,2", "3": "1,2", "4": "1,2", "5": "1,2", "6": "1,2", "7": "1,2", "8": "1,2", "9": "1,2", "10": "1,2", "11": "1,2", "12": "1,2", "13": "1,2", "14": "1,2", "15": "1,2", "16": "1,2", "17": "1,2", "18": "1,2", "19": "1,2", "20": "1,2", "21": "1,2", "22": "1,2", "23": "1,2", "24": "1,2", "25": "1,2", "26": "1,2", "27": "1,2", "28": "1,2", "29": "1,2", "30": "1,2" } }, 
 
    memberData = memberList["member"], 
 
    res = memberData[0 + 1].split(","), 
 
    //     ^^^     add one for the index starting with one 
 
    am = 'AM' + '-' + res[0], 
 
    pm = 'PM' + '-' + res[1]; 
 

 
console.log(am + ' ' + pm);

関連する問題