Перезапустите итерацию цикла с начала, как только цикл закончится - PullRequest
0 голосов
/ 25 октября 2018

У меня есть массив и массив объектов.

Мне нужно в основном сопоставить первый элемент массива с первым элементом объекта внутри массива и т. Д.

Оба массива могут иметь переменную длину, и цикл должен начинаться заново с самого начала, когда цикл заканчивается.

Однако я не уверен, что цикл снова можно запустить.

Это мой код.

const colors = ['#7cb5ec', '#434348', '#90ed7d', '#f7a35c']

const obj = [{
    name: 'Toyota'
  },
  {
    name: 'Honda'
  },
  {
    name: 'Buick'
  },
  {
    name: 'Chevy'
  },
  {
    name: 'Ford'
  },
  {
    name: 'Toyota'
  }
]

_.forEach(obj, (item, index) => {
  item.color = colors[index]
})

console.log(obj)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

Так что для Форда и Тойоты он должен начинаться с первого раза.Пожалуйста, совет.

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете использовать оператор % для запуска массива с индекса 0 снова:

const colors = ['#7cb5ec', '#434348', '#90ed7d', '#f7a35c']

const obj = [
  {name: 'Toyota'}, {name: 'Honda'}, {name: 'Buick'},
  {name: 'Chevy'}, {name: 'Ford'}, {name: 'Toyota'}
];

_.forEach(obj, (item, index) => {
  item.color = colors[index % colors.length]
});

console.log(obj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
...