1

I have two separate arrays and I'm trying to create a new nested array that has values grouped together.

Can I use the map() method and pair each item inside the map method?

There is a similar question here: Map an array of arrays

However, he context is different because I don't have a nested array to begin with.

   var letters = [a, b, c];
   var numbers = [1, 2, 3];

   var lettersAndNumbers = letters.map((letter) => {
       numbers.forEach((number) => {
          return letter, number;
       );
    });
    
    // lettersAndNumbers = [[a, 1], [b, 2], [c, 3]]

Thank you for any tips, hints, or solutions!

imnan
  • 11
  • 2

3 Answers3

3

To do this, use the following

var letters = ['a','b','c'];
var numbers = [1, 2, 3];
var letterAndNumbers = letters.map((letter,index) => {
       return [letter,numbers[index]];
})

And if you print it, you will receive the following output

console.log(letterAndNumbers)
[ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
Eduardo Coltri
  • 506
  • 3
  • 8
1

The second parameter of .map() is Index. Make use of it for retrieve a numbers[i] by that iterating index:

const letters = ["a", "b", "c"];
const numbers = [1, 2, 3];

const lettersAndNumbers = letters.map((a, i) => [a, numbers[i]]);


console.log(lettersAndNumbers)
// lettersAndNumbers = [[a, 1], [b, 2], [c, 3]]
Roko C. Buljan
  • 196,159
  • 39
  • 305
  • 313
0

I would use a map but here is a reduce just for the sake of it.

var letters = ['a', 'b', 'c'];
var numbers = [1, 2, 3];

var lettersAndNumbers = (letters, numbers) => letters.reduce((results, letter, index) => {
  results.push([letter, numbers[index]]);
  return results;
}, []);

console.log(lettersAndNumbers(letters, numbers));
Adrian Brand
  • 20,384
  • 4
  • 39
  • 60