Это код, который делает то, что вы ищете. Он не генерирует никаких элементов DOM, однако заботится обо всех logi c, кроме «процентов», поскольку вы не указали, что должно произойти с этим значением.
Подводя итог:
- Создайте массив, содержащий все «группы».
- Заполните этот массив сгруппированными неделями. Если неделя уже отслеживается, добавьте ее значение к объектам отслеживания
data
-Array, иначе создайте новую группу. - Теперь просто переберите каждую группу, отобразите значение групп
week
и выполните лог. c для нахождения минимального (начало), максимального (шлюха) и суммированного (результат) значений. Все это можно сделать с помощью метода reduce
. - Журнал / Отображение результатов.
const { vecka } = { "vecka": [{ "week": "20-15", "start": 1000, "slut": 1019, "resultat": "19", "procent": "1.90" }, { "week": "20-15", "start": 1019, "slut": 1036, "resultat": "17", "procent": "1.67" }, { "week": "20-15", "start": 1036, "slut": 1060, "resultat": "24", "procent": "2.32" }, { "week": "20-15", "start": 1060, "slut": 1090, "resultat": "30", "procent": "2.83" }, { "week": "20-16", "start": 1090, "slut": 1121, "resultat": "31", "procent": "2.84" }] };
const sets = [];
for (let set of vecka) {
// Find week if it is already tracked
const trackedWeek = sets.filter(w => w.time == set.week)[0];
if (!trackedWeek) {
// If week is not already being tracked, create a new entry
sets.push({ time: set.week, data: [set]});
} else {
// If week is already being tracked, add data to week
trackedWeek.data.push(set);
}
};
for (let set of sets) {
// Find start
const start = set.data.reduce((min, { start }) => {
if (!min) return start;
return min > start ? start : min;
}, null);
// Find end
const end = set.data.reduce((max, { slut }) => {
if (!max) return slut;
return max < slut ? slut : max;
}, null);
// Accumulate resultat
const resultat = set.data.reduce((acc, { resultat }) => (acc += parseInt(resultat)), 0);
console.log("week: ", set.time);
console.log("start: ", start);
console.log("slut: ", end);
console.log("resultat: ", resultat);
}
Надеюсь, это поможет. Взгляните на массивы и объекты и их методы. Обычно это все, что вам нужно для подобных манипуляций.