I'd like to know which would be the best way to solve this problem using javascripts native array methods(map,reduce,etc.). 

Given an array of n objects I want to create another array that will contain m objects for each element in the original array. I can do it using common "for" loops to iterate the array but I'd like to know if it can be solved with the native array methods.

Example case:

I have an array with n elements of like "ObjectA":

var objectA = {
       name: "xxx",
       tels: ["yyy","zzz"]
};


I would like to get another array of objects of type "ObjectB":

var objectB = {
       name: "xxx",
       tel: "yyy"
};


So in this case, if the first array contained only objectA, the desired result would be:

[
   {
      name: "xxx",
      tel: "yyy"
   },
   {
      name: "xxx",
      tel: "zzz"
   }
]


I've tried using two nested "map" calls, but the callback function can only return one element. 

var array1 = [objectA];

var array2 = array1.map(function(objectA){
   return objectA.tels.map(function(tel){
      return {
                 name : objectA.name,
                 tel : tel
              };
   });
});


Returning another array in the callback, generates an array of arrays and it's not what I want. Array2 result:

[
   [
      {
         name: "xxx",
         tel: "yyy"
      },
      {
         name: "xxx",
         tel: "zzz"
      }
   ]
]


Do I have to use common for loops or is there a native javascript way?


Question: Is untapping my permanents during the untap step optional?
Answer: You do not get to choose whether or not to keep a permanent tapped during the Untap Step of the Beginning Phase unless a specific card's ability provides that choice.

The word "determine" in this context does not mean choose, it means to evaluate whether or not there are any abilities preventing a permanent from untapping, and evaluating the decision to untap should an ability provide that choice. As the rule states:


  Normally, all of a player's permanents untap.