Tengo dos matrices, una es una lista de nombres y otra es una lista de edad que se genera con una función. Para facilitar las cosas, solo mostraré el resultado final de las dos matrices.
let nameList=["John","Brenda","Sabrina","Ray","Jacob"]; let ageList=[ 23, 29, 30, 23, 25 ]Quería crear una nueva matriz en la que pueda combinar cada nombre emparejado con el número de edad de la misma secuencia. Ej: John tendrá 23 a su lado, Brenda 29, Sabrina 30, y así sucesivamente.
He escrito esta función para hacerlo.
function combineData (nameArray,ageArray,combArray){ let tempComb=[]; for (let i=0;i<nameArray.length;i++) { tempComb.push(nameArray[i]); tempComb.push(ageArray[i]); combArray.push(tempComb); } }El resultado de este ciclo hizo lo que quería obtener, pero no realmente. A continuación se muestra el resultado que devuelve.
[ [ 'John', 23, 'Brenda', 29, 'Sabrina', 30, 'Ray', 23, 'Jacob', 25 ], [ 'John', 23, 'Brenda', 29, 'Sabrina', 30, 'Ray', 23, 'Jacob', 25 ], [ 'John', 23, 'Brenda', 29, 'Sabrina', 30, 'Ray', 23, 'Jacob', 25 ], [ 'John', 23, 'Brenda', 29, 'Sabrina', 30, 'Ray', 23, 'Jacob', 25 ], [ 'John', 23, 'Brenda', 29, 'Sabrina', 30, 'Ray', 23, 'Jacob', 25 ] ]¿Alguien puede decirme cómo evitar que se duplique?
Pregunta adicional. ¿Hay alguna manera de colocar cada combinación de nombre y edad en su propia matriz y luego combinarla con las demás para crear una matriz anidada como esta?
[['John', 23],['Brenda',29],['Sabrina',30],['Ray',23],['Jacob',25]]
Puede map los nombres y usar el índice para agregar el elemento de la matriz de edades.
const nameList = [ 'John', 'Brenda', 'Sabrina', 'Ray', 'Jacob' ]; const ageList = [ 23, 29, 30, 23, 25 ]; const out = nameList.map((name, i) => { return [name, ageList[i]]; }); console.log(out);const nameList = ["John", "Brenda", "Sabrina", "Ray", "Jacob"]; const ageList = [23, 29, 30, 23, 25]; function zipper(arr1, arr2) { const temp = {}; for (let i = 0; i < arr1.length; i++) { temp[arr1[i]] = arr2[i]; } return Object.entries(temp); }Esta es una sola línea en varios guiones bajos como bibliotecas. La función generalmente se llama zip.
const results = _.zip(nameList, ageList)