First of all I'm not entirely sure if this is the right approach for the problem I am having but here it goes.
I have two arrays
const projects = ["PP", "JJ"]
const issues = ["10000", "10002", "100003"]
For each issue I want to create an object like so:
{
"issueTypeId": "10002",
"projectId": "PP",
"viewType": "GIC"
}
And at the end finish with an array of objects, something like:
[{
"issueTypeId": "10002",
"projectId": "PP",
"viewType": "GIC"
},
{
"issueTypeId": "10000",
"projectId": "PP",
"viewType": "GIC"
}]
So far this is my logic
const projects = ["PP", "JJ"]
const issues = ["10000", "10002", "100003"]
const p = issues.map(issue => {
return projects.map(project => {
return {issueTypeId: issue, projectId: project, viewType: "GIC"}
})
})
console.log(p)
But as you can see I get an array of arrays at the end which I'm pretty sure is due to the double .map logic.
1st - Is there a better way to achieve my objective?
2nd - If not, how to remove the inner array and get a single one
Thank you
CodePudding user response:
Use flatMap
instead of map
. Plus, by choosing your variables wisely and using abbreviated form of arrow functions you could use the following:
const projects = ["PP", "JJ"],
issues = ["10000", "10002", "100003"],
viewType = "GIC",
p = issues.flatMap(issueTypeId =>
projects.map(projectId => ({issueTypeId, projectId, viewType}))
);
console.log(p)
CodePudding user response:
You can try this
const projects = ['PP', 'JJ'];
const issues = ['10000', '10002', '100003'];
let outArray = [];
issues.forEach((i) => {
projects.forEach((p) => {
outArray.push({
issueTypeId: i,
projectId: p,
viewType: 'GIC',
});
});
});
console.log(outArray);