# How to transpose an array of strings in JavaScript

Our goal is to transpose an array of strings. For example:

```terminal```| h o w |     | h a y |
| a r e |  →  | o r o |
| y o u |     | w e u |
``````

In JavaScript:

```javascript```// Initial array
let array = ['how', 'are', 'you'];

// Our goal
let trans = ['hay', 'oro', 'weu'];
``````

## Classical approach

We can iterate through the array:

```javascript```// Initial array
let array = ['how', 'are', 'you'];

// Declare an empty array
let trans = [...array].fill('');

// Iterating through the array to achieve our goal
for(let i = 0; i < array.length; i ++){
for(let j = 0; j < array.length; j ++){
trans[i] = trans[i] + array[j][i];
}
}

console.log(trans);
// ['hay', 'oro', 'weu']
``````

## ES6 approach (one line of code)

We can achieve the same result using ES6:

```javascript```// Initial array
let array = ['how', 'are', 'you'];

// We can observe that:
// trans = [array[0][0] + array[1][0] + array[2][0],
//          array[0][1] + array[1][1] + array[2][1],
//          array[0][2] + array[1][2] + array[2][2]];

// As trans is an array of sums, we can use 'map' and 'reduce' to get it.
// trans = array.map( (string, i) => array[0][i] + array[1][i] + array[2][i]);
//                                   ----------------------|-----------------
//                                                         |
//                                                         | We can use 'reduce'
//                                                         | to sum the elements
//                                                         |
//                 [...string].reduce( (acc, elem, j) => acc += array[j][i], '');

// In one line of code
let trans = array.map((string, i) => [...string].reduce( (acc, elem, j) => acc += array[j][i], ''));

console.log(trans);
// ['hay', 'oro', 'weu']
``````

Hi, I'm Erik, an engineer from Barcelona. If you like the post or have any comments, say hi.