Вычисление значений, возвращаемых из цикла

#javascript #angular #typescript #for-loop

#javascript #угловой #typescript #для-цикла

Вопрос:

Я создал метод, который должен возвращать правильную длину элементов:

 @Input() items: any[];

  calculateCount(type?: string | string[]): number {
    if (typeof type === 'object') {
      for (let value of type) {
        this.items amp;amp; this.items.filter((item) => item.type === value).length;
      }
      //TODO: return sum of values from loop;
    }

    if (typeof type === 'string') {
      return this.items amp;amp; this.items.filter((item) => item.type === value).length;
    }
    return this.items amp;amp; this.items.length;
  }
 

Но мне нужны предложения, как вернуть сумму значений из цикла. Спасибо

Ответ №1:

 let total = loopitems.reduce((acc, val) => acc  = val.itemToSumUp, 0);
 

элементы цикла — это все элементы, которые необходимо подсчитать.

itemToSumUp — это свойство, которое вам нужно суммировать (не используйте .xxx, если вам нужен весь объект.)

0 = начать отсчет с нуля.

Ответ №2:

Я искал решение и нашел его, используя .some() метод вместо вычисления цикла. Вот что я сделал:

 calculateCount(type?: string | string[]): number {

    if (Array.isArray(type)) {
        return this.items amp;amp; this.items.filter((item) => type.some((someType) => someType === item.type)).length;
    }
        
    if (typeof type === 'string') {
        return this.items amp;amp; this.items.filter((item) => item.type === value).length;
    }
    return this.items amp;amp; this.items.length;
}
 

Я надеюсь, что это должно быть полезно.