2017-06-13 15 views
0

配列内の特定のインデックスでブール値をプッシュしたいとします。未定義配列内の特定のインデックスでブール値をプッシュ

のプロパティを読み取ることができません「プッシュ」これが私のコードです:私は、コードを実行するたびに、私はこのエラーを、ERRORの例外TypeError取得

   var check_ins = []; 
      for (var i = 0; i < this.employees.length; i++) { 
      // let check = check_ins[i]; 
      if (check_ins[i] === true) { 
       let alert = this.alertCtrl.create({ 
       title: 'Sorry,', 
       subTitle: 'ur already checked in', 
       buttons: ['OK'] 
       }); 
       alert.present(); 
       break; 
      } else if (check_ins[i] === false || check_ins[i] === undefined) { 
       let checkInTime = new TimeInModel(in_timing.date, emp_id, in_timing.time_in); 
       this.employeesService.pushTimeIn(checkInTime) 
       .subscribe(checkInTime => { 
       }, 
       error => this.errorMessage = <any>error); 
       console.log("Successfully checked-in!"); 
       check_ins[i].push(true); 
       break; 
      } 

何が問題だろうか?アレイを使用して同じ出力を達成する別の方法がありますか?あなたはcheck_ins[i]に値trueをプッシュする必要はありません

+1

あなたがしている方法は間違っています。 'check_ins.push(true);' –

+0

'check_ins [i] === undefined'なので、関数を呼び出すことはできません。また、 'check_ins [i]'は値が存在するときはブール値です。ブール値に 'push'関数を使うことはできません。 'check_ins.push(true) 'を使う必要があります –

答えて

0

、あなたはそれを設定することができます。check_ins[i] = trueまたは配列への真のプッシュする:あなたはプッシュを使用する場合check_ins.push(true)

0

、プッシュされた値は、新たな要素として追加されますアレイに。代わりに次のようにすることをお勧めします:

var check_ins = []; 
     for (var i = 0; i < this.employees.length; i++) { 
     // let check = check_ins[i]; 
     if (check_ins[i] === true) { 
      let alert = this.alertCtrl.create({ 
      title: 'Sorry,', 
      subTitle: 'ur already checked in', 
      buttons: ['OK'] 
      }); 
      alert.present(); 
      break; 
     } else if (check_ins[i] === false || check_ins[i] === undefined) { 
      let checkInTime = new TimeInModel(in_timing.date, emp_id, in_timing.time_in, true); 
      this.employeesService.pushTimeIn(checkInTime) 
      .subscribe(checkInTime => { 
      }, 
      error => this.errorMessage = <any>error); 
      console.log("Successfully checked-in!"); 
      check_ins[i]=true; 
      break; 
     } 
+0

それは私の問題を部分的に解決しました。同じ従業員で2回チェックインできるため、 "true"という値はどこにも保存されていないということです。 最初にチェックインした後、指定されたIDのステータスをtrueに設定する必要があります。そのため、もう一度警告メッセージがポップアップ表示されるはずです。@Abhay Naveen – 7Guyo

+0

@ 7guyo check_in [i] statusをtrueに設定したときの従業員のステータス?ページがリフレッシュされない限り、値は保存され、変更されません。 –

関連する問題