如何使用整数迭代数组,同时添加分数 - Javascript

时间:2017-12-29 17:12:53

标签: javascript

我有以下内容:

var arr = [1, 4, 1, 5, 1];
var fractionSum; 

for (var i = 0; i < arr.length; i++) { 

  fractionSum += arr[i] / arr.length 

}

console.log(fractionSum) = NaN

为什么是NaN?如何使这项工作按照我的预期方式工作,即将数组中的每个项目转换为分数并添加它们?

2 个答案:

答案 0 :(得分:5)

您需要指定一个用于累加值的起始值。否则,您的值为undefined,任何数值运算都会返回NaN,这意味着不是数字。

var fractionSum = 0;

答案 1 :(得分:0)

您也可以使用 <div *ngIf="formSubmitted && teamForm.pristine" class = "submitted"> Form submitted successfully. </div> <div class="team"> <form [formGroup]="teamForm" (ngSubmit)="onFormSubmit()"> <div class="all-emp"> <b> Employees in Team :{{empFormArray.controls.length}}</b><br><br> <div formArrayName="empFormArray"> <div *ngFor = "let emp of empFormArray.controls; let idx = index" [formGroupName]="idx" class="employee"> <p> <b>Employee : {{idx + 1}}</b> </p> <p>Emp Id : <input type="checkbox" [value]="emp.isSelected" formControlName="name">{{emp.name}}</p> </div> </div> </div> <br/> <button [disabled]="teamForm.invalid">SUBMIT</button> ,如下所示:

export class CheckboxlistComponent implements OnInit {

  teamForm:FormGroup;
  formSubmitted = false;

  constructor(
       private formBuilder:FormBuilder) { 
  }

  ngOnInit() {
      this.createTeamForm();
      this.addEmployee('00', true);
      this.addEmployee('99', false);
      this.addEmployee('77', false);
  }

createTeamForm(){
      this.teamForm = this.formBuilder.group({
      empFormArray: this.formBuilder.array([]) 
      }); 
  }
  get empFormArray(): FormArray{
      return this.teamForm.get('empFormArray') as FormArray;
  }

  addEmployee(name, selected){

    let obj = {
       name: name,
      isSelected: selected
    }

    let fg = this.formBuilder.group({
        name: [obj]
      });

      this.empFormArray.push(fg);     
  }

  onFormSubmit() {
      let data = JSON.stringify(this.teamForm.value);
      console.log(data);

    this.formSubmitted = true;
      // this.teamForm.reset();   
  }   
}