2016-11-03 13 views
0

status[a][b] のようなアクセス可能な辞書を作成したいところです。abは初期化時にはわからないランダムな文字列です。これは、エラーをスローエラー:ステータス[x]は未定義です

status = {} 
name = {}; 
time = {}; 
score = {}; 
for (i=0; i<$scope.submissions.length; i++) 
{ 
    e = $scope.submissions[i]; 
    status[e.rno] = status[e.rno] || {}; 
    time[e.rno] = time[e.rno] || 0; 
    score[e.rno] = score[e.rno] || 0; 
    status[e.rno][e.problem] = status[e.rno][e.problem] || 0; 
    if (e.score == 100 && status[e.rno][e.problem] == 0) 
    { 
     status[e.rno][e.problem] = 100; 
     time[e.rno] += e.id; 
     score[e.rno] += 100; 
    } 
} 
console.log(score["20161230"]); 

はここで正確なユースケースですError: status[e.rno] is undefined

答えて

1

statusがウィンドウのプロパティであり、あなたがそのタイプを変更することはできません。関数スコープ(グローバルウィンドウプロパティの使用を避けるには)にいる場合はvarを使用するか、グローバルでなければならない場合は別の名前を使用する必要があります。

+0

私は決してそれを捕まえませんでした。ありがとう! – anukul

+1

@anukul本当にグローバル変数が必要な場合を除き、常にローカル変数を使用する習慣を覚えておいてください。 – Barmar