Angular Javascript объект с массивами, циклом и получением длины каждого массива? - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь создать набор данных из серверной части API, которую я настроил в своем проекте. Мне уже удалось сгруппировать мой вызов API по дате, но теперь мне нужно проверить длину каждого массива дат, который создается loda sh.

Как бы я это сделал, потому что при каждой попытке я ' мы пробовали до сих пор не удалось. Изображение, которое я включил, показывает console.log после того, как я сгруппировал свой результат, а также показывает количество записей в каждом массиве, и это именно то, что я хочу получить.

Текущий код, я удалил свою попытку при решении этой проблемы, потому что я получу только неопределенные результаты.

        ngOnInit() {
        this._estimateService.getEstimates()
            .subscribe(estimateData => {
                const groupedEstimateData = groupBy(estimateData, 'estimate_date');
                console.log(groupedEstimateData);
            });
        }

Пример желаемого результата:

2019-12-09, 47
2019-12-10, 6
etc

Изображение: enter image description here

Ответы [ 3 ]

2 голосов
/ 08 января 2020

Я не уверен в том, что вы подразумеваете под «проверкой длины». Вот пример желаемого вывода console.log

ngOnInit() {
        this._estimateService.getEstimates()
            .subscribe(estimateData => {
                const groupedEstimateData = groupBy(estimateData, 'estimate_date');
                Object.entries(groupedEstimatesData).map(([date, estimatedData]) => {
                    // do what you want there with each line
                    console.log(date, estimatedData.length);
                });
            });
        }

Вы можете взглянуть на методы Object.entries и map.

Удачи

1 голос
/ 08 января 2020

Вы можете сделать это просто с помощью:

const dates = Object.keys(groupedEstimateData);

let output = {};

dates.forEach( date => output[date] = groupedEstimateData[date].length );

Object.keys(groupedEstimateData) даст вам массив ["2019-12-09", "2019-12-10", etc]

Затем вы итерируете этот массив для создания этого выходного объекта:

{
    "2019-12-09" : 47,
    "2019-12-10" : 6,
    etc
}
1 голос
/ 08 января 2020

Вы можете сделать что-то вроде:

const groupsWithCounts = Object.keys(groupedEstimateData).map(key => {
    [key]: groupedEstimateData[key],
    total: groupedEstimateData[key].length
})

Теперь groupsWithCounts будет массивом объектов с такой структурой:

{
    2019-12-9: [item, item, item, ...], // the original items
    total: 47 // the total count of items
}
...