const colors = [
{ primary: '#AAAAAA', secondary: '#AAABBB' },
{ primary: '#BBBBBB', secondary: '#BBBCCC' },
{ primary: '#CCCCCC', secondary: '#CCCDDD' },
{ primary: '#DDDDDD', secondary: '#DDDEEE' },
]; // ЦВЕТА ВСЕГДА В НУЖНОМ ПОРЯДКЕ
const DATASETS = [
{
data: [1, 2, 3, 4, 5],
},
{
data: [2, 3, 4, 5, 6],
},
{
data: [3, 4, 5, 6, 7],
},
]; // МАССИВ МОЖЕТ БЫТЬ ОГРОМНЫМ, ДАННЫЕ ТОЖЕ
const OBJ_WITH_SUM_OF_VALUES_OF_DATA = {};
DATASETS.forEach((dataset, index) => {
OBJ_WITH_SUM_OF_VALUES_OF_DATA[index] = dataset.data.reduce((a, b) => a + b, 0); // создаем объект с суммами данных, для понимания порядка убывания и распределения цветов (может быть есть решение лучше)
});
const NEW_OBJ_WITH_COLORS_ON_DATA = {
// здесь должны быть объекты по типу => {
// OBJ_WITH_SUM_OF_VALUES_OF_DATA[index]: colors[НАИБОЛЬШЕЕ ЗНАЧЕНИЕ СУММЫ ПОЛУЧАЕТ ПЕРВЫЙ ЦВЕТ, ДАЛЬШЕ ПО УБЫВАНИЮ]
// }
}; // то что не понятно
const NEW_DATASETS = DATASETS.map(dataset => {
return {
...dataset,
...NEW_OBJ_WITH_COLORS_ON_DATA,
};
}); /* нужный результат => [
{
data: [1, 2, 3, 4, 5],
primary: '#CCCCCC',
secondary: '#CCCDDD'
},
{
data: [2, 3, 4, 5, 6],
primary: '#BBBBBB',
secondary: '#BBBCCC'
},
{
data: [3, 4, 5, 6, 7],
primary: '#AAAAAA',
secondary: '#AAABBB'
},
]
*/