/* чуть сложней, но более информативный */ items.forEach( console.log ) ;
items.forEach( ( data ) => console.log( data )) ;
Object.keys(arr).forEach( ... );
const arr = Array.prototype.map.call(obj, ((v) => v.text));
const newObj = Object.entries(oldObj).reduce((acc, [key, value]) => {
acc[key] = value.text;
return acc;
}, {});
Чтобы понять почему в программировании массивы стартуют с нуля, загугли что такое массив в целом и как он устроен.
Если кратко, то переменная хранит только ссылку на место (адрес), где хранятся элементы массива. Соответственно 0 говорит о том, что элемент надо читать прямо со ссылки массива. 1 означает, что начинать надо со второго блока и т.д.
Крайне грубо расписал, поэтому лучше загугли.