¿Alguien sabe una forma sencilla de agrupar una matriz con una matriz anidada? Por ejemplo, tengo una variedad de animales:
[ ['Cat', 'Dog', 'Monkey'], ['my pet', 'it is animals', 'terrestrial animals'] ] Quiero crear una nueva matriz con un formato agrupado por ['Cat', 'Dog', 'Monkey'] :
[ { groupTitle: 'Cat', relations: ['my pet', 'it is animals', 'terrestrial animals'] }, { groupTitle: 'Dog', relations: ['my pet', 'it is animals', 'terrestrial animals'] }, { groupTitle: 'Monkey', relations: ['my pet', 'it is animals', 'terrestrial animals'] } ]¿Cómo puedo hacerlo? ¡Gracias!
map() const arr = [ ['Cat', 'Dog', 'Monkey'], ['my pet', 'it is animals', 'terrestrial animals'] ]; // original data const [groupTitles, relations] = arr; // array destructuring to get individual sub-arrays const result = groupTitles.map(groupTitle => ({ groupTitle, relations })); console.log(result); // print resultUtilicé el siguiente enfoque para lograr el resultado deseado.
map() a través de la matriz de animales para obtener la matriz de objetos deseada y almacenarla en una variable de resultado.reduce() const arr = [ ['Cat', 'Dog', 'Monkey'], ['my pet', 'it is animals', 'terrestrial animals'], ]; // original array const result = arr[0].reduce((a, b) => { return [ ...a, // previously calculated values { // new value groupTitle: b, relations: arr[1], }, ]; }, []); console.log(result); // print result El mismo resultado también se puede lograr usando el método reduce() según sea necesario.
Puedes hacer una iteración anidada usando for loop por ejemplo:
const arr = [ ["Cat", "Dog", "Monkey"], ["my pet", "it is animals", "terrestrial animals"], ]; let newArr = []; for (let i = 0; i <= arr.length; i++) { for (let j = 0; j < arr[0].length; j++) {} newArr.push({ groupTitle: arr[0][i], relations: arr[1] }); } console.log(newArr);Uso de asignaciones de desestructuración
const arr = [ ['Cat', 'Dog', 'Monkey'], ['my pet', 'it is animals', 'terrestrial animals'] ] let a,b,c, obj, newArr = []; [a,b,c] = arr[1] arr[0].forEach(el => { obj = { groupTitle: el, relations: [a,b,c] } newArr.push(obj) }) console.log(newArr)