Home > Software engineering >  Extract array from javascript object
Extract array from javascript object

Time:04-22

I have below javascript object - (named Division) I want to extract only SubDivs from the array

I tried : -

const division = [{
    Name: "DivName1",
    Value: "DivValue1",
    SubDivision: {
      Name: "SubDiv1",
      Value: "SubDiv1"
    }
  },
  {
    Name: "DivName2",
    Value: "DivValue2",
    SubDivision: [{
        Name: "SubDiv2",
        Value: "SubDiv2"
      },
      {
        Name: "SubDiv3",
        Value: "SubDiv3"
      }
    ]
  }
]



var subDivs = division.map(x => x.SubDivision);
console.log(subDivs)

But this is not giving me array in format -

[{
Name:"SubDiv1",
Value:"SubDiv1"
},
{
Name:"SubDiv2",
Value:"SubDiv2"
},
{
Name:"SubDiv3",
Value:"SubDiv3"
}]

CodePudding user response:

You can use flatMap for that

const division = [{
    Name: "DivName1",
    Value: "DivValue1",
    SubDivision: [{
      Name: "SubDiv1",
      Value: "SubDiv1"
    }]
  },
  {
    Name: "DivName2",
    Value: "DivValue2",
    SubDivision: [{
        Name: "SubDiv2",
        Value: "SubDiv2"
      },
      {
        Name: "SubDiv3",
        Value: "SubDiv3"
      }
    ]
  }
]

const subdivision = division.flatMap(d => d.SubDivision)

console.log(subdivision)

CodePudding user response:

Given your example, all you need to do is call flat on the mapped array:

var subDivs= division.map(x=>x.SubDivision).flat();

Working example:

const division = [{
    Name: "DivName1",
    Value: "DivValue1",
    SubDivision: [{
      Name: "SubDiv1",
      Value: "SubDiv1"
    }
  ]},
  {
    Name: "DivName2",
    Value: "DivValue2",
    SubDivision: [{
      Name: "SubDiv2",
      Value: "SubDiv2"
    },
    {
      Name: "SubDiv3",
      Value: "SubDiv3"
    }
  ]
  }
]

var subDivs= division.map(x=>x.SubDivision).flat();

console.log(subDivs)

  • Related