Home > OS >  Remove nested array from array of arrays
Remove nested array from array of arrays

Time:04-28

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);
  • Related