В чем разница между item и arr[index]

подскажите пожалуйста, в чем разница между item и arr[index] на примере такой задачи

Напишите функцию colonOdd(num), которая принимает число num в качестве аргумента и вставляет двоеточие (:) между двумя нечетными числами. Например, если вводится число 55639217, то на выходе должно быть 5:563:921:7.

 function colonOdd(num){
          return num.split('')
        .map((item,index,arr) => arr[index] % 2 != 0 && arr[index + 1] % 2 != 0 ? item + ':': item).join('')
        }
        console.log(colonOdd('556'));
        //output: 5:56

Вот так работает А вот так - нет

 function colonOdd(num){
      return num.split('').map((item,index,arr) => item % 2 != 0 && item[index + 1] % 2 != 0 ? item + ':': item).join('')
    }
    console.log(colonOdd('556')); 
   //output: 5:5:6

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

Автор решения: Анатолий Тюнтяев

item[index + 1] зачем это? это от значения находится какой-то индекс. Первый вариант более правильный, т.к. работает с массивом по индексам, а следующий элемент в итерации взять... проблематично

→ Ссылка
Автор решения: Юрий
function colonOdd(num) {
    return num.split('')
  .map((item,index,arr) => (arr[index] % 2 != 0 && arr[index + 1] % 2 != 0 && index < arr.length-1) ? item + ':': item).join('')
  }

console.log(colonOdd('55617'));
→ Ссылка