Home > Blockchain >  How to merge two arrays like this way? (Example in description)
How to merge two arrays like this way? (Example in description)

Time:04-29

I would like to know how can I merge arrays in this way e.g.:

const names = ['MARCUS', 'LUCAS', 'ANDREA']
const surnames = ['SMITH', 'JOHNSON', 'WILLIAMS']
[...merge stuff]
// and then the output should be 
const full_names = ['MARCUS SMITH', 'LUCAS JOHNSON', 'ANDREA WILLIAMS']

CodePudding user response:

These are couple of ways to do it. Assumption is that there is 1:1 matching of name and surname in the two input arrays.

const names = ['MARCUS', 'LUCAS', 'ANDREA']
const surnames = ['SMITH', 'JOHNSON', 'WILLIAMS']

// way 1: traditional loop
const res = [];
for (let i = 0; i < names.length; i  ) {
  res.push(`${names[i]} ${surnames[i]}`);
};
console.log('full_names: ', res);

// way 2: another way - more functional flavor
const res2 = names.reduce((acc, e, i) => {
    acc.push(`${e} ${surnames[i]}`);
    return acc;
}, [])
console.log('full_names: ', res2);

output:

[ 'MARCUS SMITH', 'LUCAS JOHNSON', 'ANDREA WILLIAMS' ]

CodePudding user response:

Here a zip function creates an array like [["MARCUS","SMITH"],["LUCAS","JOHNSON"],["ANDREA","WILLIAMS"]] and then map converts the inner arrays to strings.

const names = ['MARCUS', 'LUCAS', 'ANDREA'];
const surnames = ['SMITH', 'JOHNSON', 'WILLIAMS'];

const zip = (...arrays) => {
  let res = [];
  
  for(let i = 0; i < arrays[0].length; i  ) {
    res.push([]);
    for(let j = 0; j < arrays.length; j  ) {
      res[i].push(arrays[j][i]);
    }
  }
  
  return res;
};

const res = zip(names, surnames)
  .map(([name, surname]) => name   ' '   surname);

console.log(res);

CodePudding user response:

You can do it like:

const names = ['MARCUS', 'LUCAS', 'ANDREA']
const surnames = ['SMITH', 'JOHNSON', 'WILLIAMS']

const result = names.map((n, i) => `${n} ${surnames[i]}`)

document.getElementById('app').innerText = JSON.stringify(result)
<pre id="app"></pre>

CodePudding user response:

You can use recursion as follows:

const names = ['MARCUS', 'LUCAS', 'ANDREA'],
      surnames = ['SMITH', 'JOHNSON', 'WILLIAMS'],
      
      fn = (n,sn,i,f) => 
          i <= n.length - 1 ? 
              fn(n,sn,i 1,[...f,`${n[i]} ${sn[i]}`]) : 
                  f;
      
      console.log( fn(names,surnames,0,[]) );

  • Related