Vikram R
Vikram R

Reputation: 786

javascript array merge based on indexes

I have one array, needs to merge with values the same indexes values like 0 will become ['0','0','1','2']

Example:

0:
    0: (2) ['0', '0']
    1: (2) ['0', '0']
    2: (2) ['0', '2']
1:  
    0: ['1']
    1: ['2']
    2: ['2']
2:  
    0: ['2']
    1: ['2']
    2: ['2']

Tried

var result = outterArray.reduce(function (a, b) {
        return a.map(function (v, i) {
            return [v] + b[i];
        });
      });

but getting

0: "0,012"
1: "0,022"
2: "0,222"

expected :

0: "[0,0,1,2]"
1: "[0,0,2,2]"
2: "[0,2,2,2]"

Upvotes: 0

Views: 46

Answers (1)

Nina Scholz
Nina Scholz

Reputation: 386560

Assuming the below array, you could map the inner array and take the values from the accumulator at same index or an empty array.

const 
    data= [
        [['0', '0'], ['0', '0'], ['0', '2']],
        [['1'], ['2'], ['2']],
        [['2'], ['2'], ['2']]
    ],
    result = data.reduce((r, a) => a.map((v, i) => [...(r[i] || []), ...v]), []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Upvotes: 3

Related Questions