Перебор динамически именованных массивов

#javascript

#javascript

Вопрос:

У меня есть несколько массивов с динамическими именами (пронумерованными), и мне нужно получить первое значение из каждого из них.

Код выглядит следующим образом

     var array1 = ["1","2","3"];
    var array2 = ["1","2","3"];
    var array3 = ["1","2","3"];

    for (var cols=1; cols <=5; cols  ) {
        var imgs = array.cols[0];
    }
  

Я получаю «(индекс): 131 Неперехваченная ошибка ссылки: массивы не определены» в консоли

Комментарии:

1. Поместите все ваши массивы в массив и выполните вложенный цикл

2. Какой ожидаемый результат?

3. Или поместите массивы в объект, причем имена будут ключевыми.

Ответ №1:

Я понял, что вы хотите получить "1","1","1" первое значение каждого массива.

  • Вы можете создать массив для хранения всех массивов array 3
  • Использовать map() для массива arrrays
  • Внутри map() возвращает первый элемент массива.

 var array1 = ["1","2","3"];
var array2 = ["1","2","3"];
var array3 = ["1","2","3"];

let arrays = [array1,array2,array3];

let res = arrays.map(([a]) => a);

console.log(res);  

Комментарии:

1. Однако в том же цикле я повторю еще несколько действий. Виноват. Следовало бы упомянуть.

Ответ №2:

Если ваши массивы находятся в глобальной области видимости, возможно, вы сможете получить к ним доступ с помощью window object:

 var array1 = ["1","2","3"];
var array2 = ["1","2","3"];
var array3 = ["1","2","3"];

for (let i = 1; i <= 3; i  )
{
    console.log(window["array"   i][0]);
}  

Другой, более общей альтернативой является сохранение ваших массивов внутри другой структуры, такой как Map или an Array . Я покажу, как вы можете сделать это с помощью карты:

 let array1 = ["1","2","3"];
let array2 = ["1","2","3"];
let array3 = ["1","2","3"];
let myMap = new Map([["1", array1], ["2", array2], ["3", array3]]);

myMap.forEach(([first, ...rest]) => console.log(first));  

Комментарии:

1. Это приведет к тому, что OP будет иметь имена массивов в последовательности и всегда иметь номер в их конце

2. @Taplar Я добавил другую альтернативу вместо удаления ответа, возможно, первая тоже будет полезна в некоторых конкретных случаях.