#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;
}
Я надеюсь, что это должно быть полезно.