Question: I have

```
array1 = [1,2,3,4,5];
array2 = ["one","two","three","four","five"];

```

I want to get `array3` where all elements of `array1` with first (and others) element of `array2` and etc.

For example:

```
array3 = ["one 1", "two 1", "three 1", "four 1", "five 1", "one 2", "two 2", "three 2", "four 2", "five 2"...]

```

I understand that I need to use for loop but I don't know how to do it.

Answer: 
Yet another way with [*reduce*](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce) and [*map*](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) and [*concat*](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat)

Snippet based on [@Nina Scholz](https://stackoverflow.com/a/34826155/2881286)

```js
var array1 = [1, 2, 3, 4, 5],
    array2 = ["one", "two", "three", "four", "five"];

var result = array1.reduce(function (acc, cur) {
    return acc.concat(array2.map(function (name) {
        return name + ' ' + cur;
    }));
},[]);

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
```
You can use this method when `array1.length` and `array2.length` are equal.

```js
var array1 = [1, 2, 3, 4, 5];
var array2 = ["one", "two", "three", "four", "five"];
var length = array1.length;
var array3 = new Array(Math.pow(length, 2)).fill(0).map((v, i) => array2[i % length] + ' ' + array1[i / length << 0]);

document.body.textContent = JSON.stringify(array3);
```