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

<b>Всем привет</b> <br/> <br/> У меня есть вопрос о работе с многомерными массивами (я недавно начал их изучать). <br/> <pre><code class="javascript">let arr = [
    [
        "Alex",
        "Maria",
        "Alena",
        "Dima"
    ],
    [
        21,
        23,
        19,
        20
    ],
    [
        2411,
        4662,
        8853,
        2132
    ]
];</code></pre> <br/> <br/> Массив содержит информацию о пользователях, где первый вложенный массив содержит имена, второй - возраста, а третий - идентификаторы. Я хотел бы вывести данные так, чтобы они отображались в одной строке, например: (Alex 21 2411), и так далее. <br/> <br/> Вот что я пробовал сделать: <br/> <pre><code class="javascript">for (let i = 0; i &lt; arr.length; i++) {

    for (let j = 0; j &lt; arr[i].length; j++) {
       
        res.innerHTML += `Arr: ${arr[i][j]}`;
        
    }
};</code></pre> <br/> <br/> Вот полный код: <br/> <pre><code class="javascript">let arr = [
    [
        "Alex",
        "Maria",
        "Alena",
        "Dima"
    ],
    [
        21,
        23,
        19,
        20
    ],
    [
        2411,
        4662,
        8853,
        2132
    ]
];

for (let i = 0; i &lt; arr.length; i++) {

    for (let j = 0; j &lt; arr[i].length; j++) {
       
        res.innerHTML += `Arr: ${arr[i][j]}`;
        
    }
};</code></pre> <br/> <br/> Прошу помочь разобраться!
  • 10 сентября 2024 г. 21:23
Ответы на вопрос 3
Здравствуйте! Давайте разберем ваш вопрос. У вас есть многомерный массив, который содержит информацию о пользователях: имена, возраста и идентификаторы. 

Чтобы вывести каждую комбинацию данных (имя, возраст, идентификатор) в одной строке, нужно использовать один цикл, который будет проходить по всем элементам по одному и тому же индексу во всех вложенных массивах.

Вот как можно это сделать:

```javascript
let arr = [
    [
        "Alex",
        "Maria",
        "Alena",
        "Dima"
    ],
    [
        21,
        23,
        19,
        20
    ],
    [
        2411,
        4662,
        8853,
        2132
    ]
];

let res = ''; // предполагаем, что у вас есть элемент, куда нужно выводить результат

for (let i = 0; i < arr[0].length; i++) { // проходим только по длине первого массива (имен)
    res += `${arr[0][i]} ${arr[1][i]} ${arr[2][i]}<br/>`;
}

// Теперь res содержит строки с данными
console.log(res); // выводим в консоль для проверки, или например добавляем в HTML
document.body.innerHTML = res; // добавляем результат в тело документа
```

### Объяснение кода:
1. Мы используем один цикл (for), который проходит по длине первого вложенного массива `arr[0]`, так как все вложенные массивы имеют одинаковую длину.
2. Внутри цикла мы собираем строки в переменной `res`, добавляя по порядку имя, возраст и идентификатор, разделяя их пробелами.
3. После завершения цикла `res` будет содержать все нужные строки. Вы можете вывести их в консоль или добавить в HTML.

Таким образом, вы получите результат:
```
Alex 21 2411
Maria 23 4662
Alena 19 8853
Dima 20 2132
```

Надеюсь, это поможет вам! Если есть вопросы, задавайте!
for (let j = 0; j < arr[0].length; j += 1) {
  for (let i = 0; i < arr.length; i += 1) {
    res.innerHTML += `${arr[i][j]} `;
  }
  res.innerHTML += '<br>';
}
const columns = [ 'name', 'age', 'id' ];

res.innerHTML = `
  <table>
    <thead>
      <tr>${columns.map(n => `<th>${n}</th>`).join('')}</tr>
    </thead>
    <tbody>${columns.map((_, i) => `
      <tr>${arr.map(n => `
        <td>${n[i]}</td>`).join('')}
      </tr>`).join('')}
    </tbody>
  </table>`;
Похожие вопросы