У меня есть массив объектов, а также я использую цикл foreach в typescript. Здесь, согласно моему массиву, он содержит 2 столбца со значением progress: 100, а другие меньше 100. Итак, здесь мне нужно рассчитать количество столбцов, имеющих прогресс: 100, например, здесь должно быть 2. Также мне нужно получить количество всех столбцов, имеющих значение прогресса, меньше или не 100. Например, здесь 2. Затем мне нужно добавить в div. Я пробовал, но его добавление не считается .Вот код ниже
<div>Progress : 2{{count}}</div><div>completed : 2{{count}}</div>
declare var require: any;
import { Component } from '@angular/core';
import { OnInit } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
arrayVal:any;
currentVal : any;
title = 'projectchart';
public array = [{"id":1,"progress":100},{"id":3,"progress":70},{"id":5,"progress":50},{"id":6,"progress":100}];
ngOnInit(){
let count=0;
this.array.forEach((item, index) => {
console.info(item.progress) ;
count +=item.progress ;
});
console.info(count);
}
}






Изменить эту строку
count +=item.progress;
К
if (item.progress === 100) {count += 1;}
Попробуйте так:
progressCount:number = 0;
completedCount:number = 0;
ngOnInit() {
this.array.forEach(item => {
if (item.progress < 100) {
this.progressCount ++;
} else {
this.completedCount ++;
}
});
}
HTML:
<div>Progress : 2{{progressCount}}</div><div>completed : 2{{completedCount}}</div>
Фактически, вы добавляете значение прогресса в счет. Пожалуйста, попробуйте это..
ngOnInit(){
let progress_count=0;
let completed_count=0;
this.array.forEach((item, index) => {
if (item.progress == 100) {
progress_count++;
} else {
completed_count++;
}
});
console.info('Progress count :',progress_count);
console.info('Completed count :',completed_count);
}
И используйте progress_count и Completed_count в своем HTML
Вы можете использовать такую библиотеку, как подчеркивать, где функция, такая как countBy, будет делать то, что вы хотите.
В твоем случае:
_.countBy(array, (item) => item.progress === 100 ? 'completed' : 'progress');
результат будет:
{completed: 2, progress: 2}