угловая 4 - Добавить числа из вложенного массива модели - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть массив Model.Каждый объект этой модели имеет массив другой модели.Я хочу добавить все соответствующие числовые переменные из вложенного массива.Мой код выглядит следующим образом:

Модель

TimesheetLogged.ts

export interface TimesheetLogged {
    ProjectId: string,   
    MondayHours: number,
    TuesdayHours: number,
    WednesdayHours: number,
    ThursdayHours: number,
    FridayHours: number,
    SaturdayHours: number,
    SundayHours: number   
}

Project.ts

import { TimesheetLogged } from "./TimesheetLogged";

export interface Project {
    ProjectId: number;  
    TimeLoggedHours: TimesheetLogged[];   
}

Кусок кода из компонента

public Projects: Project[];
//Get projects data from database and subscribe to Projects object  Successfully

let chartData: Array<number> = [];
    let mon:number= 0;
    let tue:number= 0;
    let wed:number= 0;
    let thu:number= 0;
    let fri:number= 0;
    let sat:number= 0;
    let sun:number= 0;

    this.Projects.forEach((empHours) => {
        empHours.TimeLoggedHours.forEach((hours) => {
            a => {
                mon += a.MondayHours;
                tue += a.TuesdayHours;
                wed += a.WednesdayHours;
                thu += a.ThursdayHours;
                fri += a.FridayHours;
                sat += a.SaturdayHours;
                sun += a.SundayHours;
            }  
        });            
    });
    chartData.push(mon);
    chartData.push(tue);
    chartData.push(wed);
    chartData.push(thu);
    chartData.push(fri);
    chartData.push(sat);
    chartData.push(sun); 

Однако я получаю сумму всех числовых переменных как

[массив объектов] [0, 0, 0, 0, 0, 0, 0]

Любойтребуется обновление в этом коде.Любое другое более простое решение приветствуется.

1 Ответ

0 голосов
/ 27 ноября 2018

Удалите a => лямбда и используйте вместо него mon += hours.MondayHours и т. Д.

В противном случае во втором forEach вы просто создаете набор лямбда-функций вместо изменения mon, tue и т. Д.

this.Projects.forEach(empHours => {
        empHours.TimeLoggedHours.forEach(hours => {
                mon += hours.MondayHours;
                tue += hours.TuesdayHours;
                wed += hours.WednesdayHours;
                thu += hours.ThursdayHours;
                fri += hours.FridayHours;
                sat += hours.SaturdayHours;
                sun += hours.SundayHours;
        });            
    });
...