Angular 6, как получить количество определенного столбца на основе одного и того же значения из массива объектов

У меня есть массив объектов, а также я использую цикл foreach в typescript. Здесь, согласно моему массиву, он содержит 2 столбца со значением progress: 100, а другие меньше 100. Итак, здесь мне нужно рассчитать количество столбцов, имеющих прогресс: 100, например, здесь должно быть 2. Также мне нужно получить количество всех столбцов, имеющих значение прогресса, меньше или не 100. Например, здесь 2. Затем мне нужно добавить в div. Я пробовал, но его добавление не считается .Вот код ниже

app.component.html

<div>Progress : 2{{count}}</div><div>completed : 2{{count}}</div> 

app.component.ts

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);
  }

}
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
1 100
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Изменить эту строку

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}

Другие вопросы по теме