Как перебрать массив у которого индекс состоит из строки?
Когда вы создаёте строковые «индексы» у объекта массива, это просто создаёт новые свойства у этого объекта, но они не являются индексами массива. Иногда говорят, «в JavaScript всё является объектом» (что не совсем так). Но массив – это как раз вполне себе объект. var a = new Array(3); // [null,null,null]
a['aaa'] = 'AAA';
a['bbb'] = 'BBB';
a.length // по-прежнему 3
Т.е. такое обращение с массивом некорректно. Все методы массива, напр. map(), reduce(), проигнорируют добавленные вами свойства.
Для вашей задачи правильнее создать вместо массива пустой объект:var ne_array = {};
ne_array['one'] = 1;
ne_array['two'] = 2;
ne_array['three'] = 3; 

for( var property in ne_array) {
  console.log( property,  ne_array[ property]);
}
можно использовать Object.keys() var obj = {};

obj.one = 1;
obj.two = 2;
obj.three = 3; 

var keys = Object.keys(obj); // [ 'one', 'two', 'three' ]

keys.forEach(key => console.log(obj[key]));