Задать вопрос
@gsdev99

Как объединить массивы?

Всем привет, подскажите, пожалуйста, как решить следующую задачу:
У меня есть массив данных:
const graphData = [{
  'value': 2.1,
  'title': 'Один'
}, {
  'value': 1.1,
  'title': 'Два два два два'
}, {
  'value': 0.7,
  'title': 'Три'
}, {
  'value': 5.1,
  'title': 'Четыре четыре'
}, {
  'value': 6.5,
  'title': 'Пять пять пять'
}]

Далее есть массив цветов:
const palette = ['green', 'yellow', 'orange']
Как мне получить следующий массив:
Каждому элементу массива добавляется цвет по порядку, если элементов данных больше чем цветов, цвета добавляются по кругу.
const tGraphData = [{
  value: 2.1,
  title: 'Один',
  color: 'green'
}, {
  value: 1.1,
  title: 'Два два два два',
  color: 'yellow'
}, {
  value: 0.7,
  title: 'Три',
  color: 'orange'
}, {
  value: 5.1,
  title: 'Четыре четыре',
  color: 'green'
}, {
  value: 6.5,
  title: 'Пять пять пять',
  color: 'yellow'
}]
  • Вопрос задан
  • 217 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = graphData.map((n, i) => ({ ...n, color: palette[i % palette.length] }));

или, в более общем виде:

const combine = (arr, keys, values) =>
  arr.map(({ ...n }, i) => (
    values.forEach((m, j) => n[keys[j]] = m[i % m.length]),
    n
  ));


const result = combine(graphData, [ 'color' ], [ palette ]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект
18 дек. 2024, в 09:56
8000 руб./за проект