@ratatyq

Как перебрать массив у которого индекс состоит из строки?

Здравствуйте, как можно перебрать(воспроизвести все содержимое элемента) массив у которого индекс состоит из строки, пример:
var array = new Array();
array['one'] = 1;
array['two'] = 2;
array['three'] = 3; 
// И т.д ...
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
Все способы перебора массива в JavaScript
Возможно, вам подойдет for .. in

В зависимости от задачи, может выйти что больше подходит mar, reduce, filter или что-то еще.

К примеру, если мне нужно выбрать из этого списка все значения, которые начинаются на букву "а", логично было бы использовать filter. А если нужно проверить, все ли значения больше нуля - every.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Когда вы создаёте строковые «индексы» у объекта массива, это просто создаёт новые свойства у этого объекта, но они не являются индексами массива. Иногда говорят, «в 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]);
}
Ответ написан
Комментировать
devellopah
@devellopah
можно использовать 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]));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы