Does anyone know a simple way to group an array with nested array? For example, i have an array of animals:
[
['Cat', 'Dog', 'Monkey'],
['my pet', 'it is animals', 'terrestrial animals']
]
I want to make new array with format that's grouped by ['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']
}
]
How can i do it? Thanks!
CodePudding user response:
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 result
I used the following approach to achieve your desired outcome.
- Use Array destructuring to get the individual arrays from the original array.
map()through the animals array to get the desired array of objects and store it in a result variable.
CodePudding user response:
You can make a nested iteration using for loop for example:
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);
CodePudding user response:
Using destructuring assignments
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)
