Back to questions
Бюро 1440
Middle
6
Практическая задача: дан массив точек с полями time и value. Необходимо выявить группы точек с одинаковым value и оставить только начало и конец каждой группы (для оптимизации построения линейного графика).
Companies where asked
Answer from AI
sobes.tech AI
Для оптимизации построения линейного графика нужно сгруппировать точки по одинаковому значению value и для каждой группы оставить только первую и последнюю точку по времени. Это позволит сократить количество точек без потери формы графика.
Пример решения на JavaScript:
function optimizePoints(points) {
if (points.length === 0) return [];
const result = [];
let start = points[0];
let prev = points[0];
for (let i = 1; i < points.length; i++) {
if (points[i].value !== prev.value) {
// Конец группы
result.push(start);
result.push(prev);
start = points[i];
}
prev = points[i];
}
// Добавляем последнюю группу
result.push(start);
result.push(prev);
// Убираем дубликаты, если группа из одной точки
return result.filter((point, index, arr) => {
if (index === 0) return true;
const prevPoint = arr[index - 1];
return !(point.time === prevPoint.time && point.value === prevPoint.value);
});
}
// Пример использования:
const data = [
{ time: 1, value: 10 },
{ time: 2, value: 10 },
{ time: 3, value: 15 },
{ time: 4, value: 15 },
{ time: 5, value: 15 },
{ time: 6, value: 10 },
];
console.log(optimizePoints(data));
Этот код проходит по массиву точек, определяет группы с одинаковым value и сохраняет только начало и конец каждой группы.