Цикличная замена слова в предложении по времени javascript

подскажите с решением вопроса, никак не могу разобраться сам. Есть, например, предложение: <p>Я ем <span id='type'>яблоки</span></p>

Есть массив в js let a = ['груши', 'персики', 'киви']

Как написать функцию, чтобы слово яблоки плавно заменялось другим (типа fadeOut\fadeIn), взятым из массива, каждые 3 секунды?

Я пробую такую функцию, но чувствую, что я не догоняю.

$.each(a,function(index,value){
        setInterval(function() {
        document.getElementById('type').textContent = a[key];
    }, 3000);

Ответы (2 шт):

Автор решения: Dmitrii Sedov

Можно соорудить что-то такое как вариант.

const fruit = document.getElementById('type');
let a = ['груши', 'персики', 'киви'];

let counter = 0;
const timer = setInterval(() => {
  if (counter == a.length) counter = 0;
  fruit.classList.toggle('active');
  setTimeout(() => {
    fruit.textContent = a[counter];
    fruit.classList.toggle('active');
    counter++;
  }, 400)
}, 3000)
#type {
  transition: opacity .4s;
  opacity: 0;
}

#type.active {
  opacity: 1;
}
<p>Я ем <span class="active" id='type'>яблоки</span></p>

→ Ссылка
Автор решения: uberchel
(function (f, a, s, t) {
  setInterval(() => {
    f.fadeOut(() => {
         f.text(s[++a == s.length ? (a = 0) : a]).fadeIn();
    });
  }, t);
}(jQuery('#type'), 0, ['груши', 'персики', 'киви'], 3000));
→ Ссылка