Javascript filter based on id












0















I have three kind of entities in my er diagram.
Province, District and City.



Relationship is City belongs to District and District belongs to the Province.



this is my database table
region.



id | region_name      | region_parent_id
1 | Western province | null
2 | Colombo | 1
3 | Gampaha | 1
4 | Kaluthara | 1
5 | Nugegoda | 2
6 | Maharagama | 2
7 | Central province | null
8 | Kandy | 7
9 | Mathale | 7
10 | theldeniya | 8
11 | penideniya | 8


If I derive the relationships I would be like this,



Western province



Colombo



  Nugegoda
Maharagama


Gampaha



Kaluthara



Central province



Kandy



Theldeniya
Penideniya


Mathale



I get this data as an array of objects like this,






const regions = [
{id:1,region_name:"Western province",region_parent_id:null},
{id:2,region_name:"Colombo",region_parent_id:1},
{id:3,region_name:"Gampaha",region_parent_id:1},
{id:4,region_name:"Kaluthara",region_parent_id:1},
{id:5,region_name:"Nugegoda",region_parent_id:2},
{id:6,region_name:"Maharagama",region_parent_id:2},
{id:7,region_name:"Central province",region_parent_id:null},
{id:8,region_name:"Kandy",region_parent_id:7},
{id:9,region_name:"Mathale",region_parent_id:7},
{id:10,region_name:"theldeniya",region_parent_id:8},
{id:11,region_name:"penideniya",region_parent_id:8}

]

console.log(regions.filter(e=> !e.region_parent_id ))





I could easily get the provinces like this.



console.log(regions.filter(e=> !e.region_parent_id ))


But how could I get districts list and the cities list?



Any help!



Thanks in advanced! =)










share|improve this question





























    0















    I have three kind of entities in my er diagram.
    Province, District and City.



    Relationship is City belongs to District and District belongs to the Province.



    this is my database table
    region.



    id | region_name      | region_parent_id
    1 | Western province | null
    2 | Colombo | 1
    3 | Gampaha | 1
    4 | Kaluthara | 1
    5 | Nugegoda | 2
    6 | Maharagama | 2
    7 | Central province | null
    8 | Kandy | 7
    9 | Mathale | 7
    10 | theldeniya | 8
    11 | penideniya | 8


    If I derive the relationships I would be like this,



    Western province



    Colombo



      Nugegoda
    Maharagama


    Gampaha



    Kaluthara



    Central province



    Kandy



    Theldeniya
    Penideniya


    Mathale



    I get this data as an array of objects like this,






    const regions = [
    {id:1,region_name:"Western province",region_parent_id:null},
    {id:2,region_name:"Colombo",region_parent_id:1},
    {id:3,region_name:"Gampaha",region_parent_id:1},
    {id:4,region_name:"Kaluthara",region_parent_id:1},
    {id:5,region_name:"Nugegoda",region_parent_id:2},
    {id:6,region_name:"Maharagama",region_parent_id:2},
    {id:7,region_name:"Central province",region_parent_id:null},
    {id:8,region_name:"Kandy",region_parent_id:7},
    {id:9,region_name:"Mathale",region_parent_id:7},
    {id:10,region_name:"theldeniya",region_parent_id:8},
    {id:11,region_name:"penideniya",region_parent_id:8}

    ]

    console.log(regions.filter(e=> !e.region_parent_id ))





    I could easily get the provinces like this.



    console.log(regions.filter(e=> !e.region_parent_id ))


    But how could I get districts list and the cities list?



    Any help!



    Thanks in advanced! =)










    share|improve this question



























      0












      0








      0








      I have three kind of entities in my er diagram.
      Province, District and City.



      Relationship is City belongs to District and District belongs to the Province.



      this is my database table
      region.



      id | region_name      | region_parent_id
      1 | Western province | null
      2 | Colombo | 1
      3 | Gampaha | 1
      4 | Kaluthara | 1
      5 | Nugegoda | 2
      6 | Maharagama | 2
      7 | Central province | null
      8 | Kandy | 7
      9 | Mathale | 7
      10 | theldeniya | 8
      11 | penideniya | 8


      If I derive the relationships I would be like this,



      Western province



      Colombo



        Nugegoda
      Maharagama


      Gampaha



      Kaluthara



      Central province



      Kandy



      Theldeniya
      Penideniya


      Mathale



      I get this data as an array of objects like this,






      const regions = [
      {id:1,region_name:"Western province",region_parent_id:null},
      {id:2,region_name:"Colombo",region_parent_id:1},
      {id:3,region_name:"Gampaha",region_parent_id:1},
      {id:4,region_name:"Kaluthara",region_parent_id:1},
      {id:5,region_name:"Nugegoda",region_parent_id:2},
      {id:6,region_name:"Maharagama",region_parent_id:2},
      {id:7,region_name:"Central province",region_parent_id:null},
      {id:8,region_name:"Kandy",region_parent_id:7},
      {id:9,region_name:"Mathale",region_parent_id:7},
      {id:10,region_name:"theldeniya",region_parent_id:8},
      {id:11,region_name:"penideniya",region_parent_id:8}

      ]

      console.log(regions.filter(e=> !e.region_parent_id ))





      I could easily get the provinces like this.



      console.log(regions.filter(e=> !e.region_parent_id ))


      But how could I get districts list and the cities list?



      Any help!



      Thanks in advanced! =)










      share|improve this question
















      I have three kind of entities in my er diagram.
      Province, District and City.



      Relationship is City belongs to District and District belongs to the Province.



      this is my database table
      region.



      id | region_name      | region_parent_id
      1 | Western province | null
      2 | Colombo | 1
      3 | Gampaha | 1
      4 | Kaluthara | 1
      5 | Nugegoda | 2
      6 | Maharagama | 2
      7 | Central province | null
      8 | Kandy | 7
      9 | Mathale | 7
      10 | theldeniya | 8
      11 | penideniya | 8


      If I derive the relationships I would be like this,



      Western province



      Colombo



        Nugegoda
      Maharagama


      Gampaha



      Kaluthara



      Central province



      Kandy



      Theldeniya
      Penideniya


      Mathale



      I get this data as an array of objects like this,






      const regions = [
      {id:1,region_name:"Western province",region_parent_id:null},
      {id:2,region_name:"Colombo",region_parent_id:1},
      {id:3,region_name:"Gampaha",region_parent_id:1},
      {id:4,region_name:"Kaluthara",region_parent_id:1},
      {id:5,region_name:"Nugegoda",region_parent_id:2},
      {id:6,region_name:"Maharagama",region_parent_id:2},
      {id:7,region_name:"Central province",region_parent_id:null},
      {id:8,region_name:"Kandy",region_parent_id:7},
      {id:9,region_name:"Mathale",region_parent_id:7},
      {id:10,region_name:"theldeniya",region_parent_id:8},
      {id:11,region_name:"penideniya",region_parent_id:8}

      ]

      console.log(regions.filter(e=> !e.region_parent_id ))





      I could easily get the provinces like this.



      console.log(regions.filter(e=> !e.region_parent_id ))


      But how could I get districts list and the cities list?



      Any help!



      Thanks in advanced! =)






      const regions = [
      {id:1,region_name:"Western province",region_parent_id:null},
      {id:2,region_name:"Colombo",region_parent_id:1},
      {id:3,region_name:"Gampaha",region_parent_id:1},
      {id:4,region_name:"Kaluthara",region_parent_id:1},
      {id:5,region_name:"Nugegoda",region_parent_id:2},
      {id:6,region_name:"Maharagama",region_parent_id:2},
      {id:7,region_name:"Central province",region_parent_id:null},
      {id:8,region_name:"Kandy",region_parent_id:7},
      {id:9,region_name:"Mathale",region_parent_id:7},
      {id:10,region_name:"theldeniya",region_parent_id:8},
      {id:11,region_name:"penideniya",region_parent_id:8}

      ]

      console.log(regions.filter(e=> !e.region_parent_id ))





      const regions = [
      {id:1,region_name:"Western province",region_parent_id:null},
      {id:2,region_name:"Colombo",region_parent_id:1},
      {id:3,region_name:"Gampaha",region_parent_id:1},
      {id:4,region_name:"Kaluthara",region_parent_id:1},
      {id:5,region_name:"Nugegoda",region_parent_id:2},
      {id:6,region_name:"Maharagama",region_parent_id:2},
      {id:7,region_name:"Central province",region_parent_id:null},
      {id:8,region_name:"Kandy",region_parent_id:7},
      {id:9,region_name:"Mathale",region_parent_id:7},
      {id:10,region_name:"theldeniya",region_parent_id:8},
      {id:11,region_name:"penideniya",region_parent_id:8}

      ]

      console.log(regions.filter(e=> !e.region_parent_id ))






      javascript






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 3 at 5:41









      Ehsan

      9,89531232




      9,89531232










      asked Jan 3 at 3:52









      Pathum SamararathnaPathum Samararathna

      939930




      939930
























          3 Answers
          3






          active

          oldest

          votes


















          1














          Try This:






          var parId = prompt("Enter region parent id : " ) ;

          const regions = [
          {id:1,region_name:"Western province",region_parent_id:null},
          {id:2,region_name:"Colombo",region_parent_id:1},
          {id:3,region_name:"Gampaha",region_parent_id:1},
          {id:4,region_name:"Kaluthara",region_parent_id:1},
          {id:5,region_name:"Nugegoda",region_parent_id:2},
          {id:6,region_name:"Maharagama",region_parent_id:2},
          {id:7,region_name:"Central province",region_parent_id:null},
          {id:8,region_name:"Kandy",region_parent_id:7},
          {id:9,region_name:"Mathale",region_parent_id:7},
          {id:10,region_name:"theldeniya",region_parent_id:8},
          {id:11,region_name:"penideniya",region_parent_id:8}
          ]

          function belong(dis) {
          var getProvince = regions.find( e => e.id === dis ) ;
          if ( getProvince ) {
          console.log("==========" + getProvince.region_name + "==========" ) ;
          regions.map( c => {if (c.region_parent_id === dis ) console.log(c.region_name + " " + c.id +" Parent:(" + c.region_parent_id +")") } )
          }
          }

          belong( parseInt(parId) );








          share|improve this answer


























          • This works! =) and how could I get the cities which are belongs to a city. If I pass district id 2 how do I get the cities belongs to that district?

            – Pathum Samararathna
            Jan 3 at 4:31











          • @Ehsan, it seems like not that tough question, you should learn how to solve problem instead of ask for code. I think you can use Map data structure solve this problem.

            – 0day
            Jan 3 at 4:37











          • @PathumSamararathna, see updated post.

            – Ehsan
            Jan 3 at 5:12



















          1














          Use filter in below way you will get your desired result.






          const regions = [
          {id:1,region_name:"Western province",region_parent_id:null},
          {id:2,region_name:"Colombo",region_parent_id:1},
          {id:3,region_name:"Gampaha",region_parent_id:1},
          {id:4,region_name:"Kaluthara",region_parent_id:1},
          {id:5,region_name:"Nugegoda",region_parent_id:2},
          {id:6,region_name:"Maharagama",region_parent_id:2},
          {id:7,region_name:"Central province",region_parent_id:null},
          {id:8,region_name:"Kandy",region_parent_id:7},
          {id:9,region_name:"Mathale",region_parent_id:7},
          {id:10,region_name:"theldeniya",region_parent_id:8},
          {id:11,region_name:"penideniya",region_parent_id:8}
          ];

          var province = regions.filter(e => !e.region_parent_id);

          province.forEach(p => {
          p.district = regions.filter(e => e.region_parent_id == p.id);
          // Uncomment following snippet if you want to have cities list inside district object also.
          //p.district.forEach(d => {
          // d.city = regions.filter(e => e.region_parent_id == d.id);
          //});

          var districtIds = p.district.map(d => d.id);
          p.city = regions.filter(e => districtIds.includes(e.region_parent_id));
          });

          console.log(province);








          share|improve this answer

































            1














            Try this:



            const regions = [
            { id: 1, region_name: "Western province", region_parent_id: null },
            { id: 2, region_name: "Colombo", region_parent_id: 1 },
            { id: 3, region_name: "Gampaha", region_parent_id: 1 },
            { id: 4, region_name: "Kaluthara", region_parent_id: 1 },
            { id: 5, region_name: "Nugegoda", region_parent_id: 2 },
            { id: 6, region_name: "Maharagama", region_parent_id: 2 },
            { id: 7, region_name: "Central province", region_parent_id: null },
            { id: 8, region_name: "Kandy", region_parent_id: 7 },
            { id: 9, region_name: "Mathale", region_parent_id: 7 },
            { id: 10, region_name: "theldeniya", region_parent_id: 8 },
            { id: 11, region_name: "penideniya", region_parent_id: 8 }
            ];

            const provinces = regions.filter(region => !region.region_parent_id);
            for (let i = 0; i < provinces.length; i++) {
            const currentProvince = provinces[i];
            // get districts for this now
            currentProvince.districts = regions.filter(region => region.region_parent_id === currentProvince.id);
            for (let j = 0; j < provinces[i].districts.length; j++) {
            const currentDistrict = provinces[i].districts[j];
            // get cities for the district
            currentDistrict.cities = regions.filter(region => region.region_parent_id === currentDistrict.id);
            }
            }

            console.log(provinces)





            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54016124%2fjavascript-filter-based-on-id%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              Try This:






              var parId = prompt("Enter region parent id : " ) ;

              const regions = [
              {id:1,region_name:"Western province",region_parent_id:null},
              {id:2,region_name:"Colombo",region_parent_id:1},
              {id:3,region_name:"Gampaha",region_parent_id:1},
              {id:4,region_name:"Kaluthara",region_parent_id:1},
              {id:5,region_name:"Nugegoda",region_parent_id:2},
              {id:6,region_name:"Maharagama",region_parent_id:2},
              {id:7,region_name:"Central province",region_parent_id:null},
              {id:8,region_name:"Kandy",region_parent_id:7},
              {id:9,region_name:"Mathale",region_parent_id:7},
              {id:10,region_name:"theldeniya",region_parent_id:8},
              {id:11,region_name:"penideniya",region_parent_id:8}
              ]

              function belong(dis) {
              var getProvince = regions.find( e => e.id === dis ) ;
              if ( getProvince ) {
              console.log("==========" + getProvince.region_name + "==========" ) ;
              regions.map( c => {if (c.region_parent_id === dis ) console.log(c.region_name + " " + c.id +" Parent:(" + c.region_parent_id +")") } )
              }
              }

              belong( parseInt(parId) );








              share|improve this answer


























              • This works! =) and how could I get the cities which are belongs to a city. If I pass district id 2 how do I get the cities belongs to that district?

                – Pathum Samararathna
                Jan 3 at 4:31











              • @Ehsan, it seems like not that tough question, you should learn how to solve problem instead of ask for code. I think you can use Map data structure solve this problem.

                – 0day
                Jan 3 at 4:37











              • @PathumSamararathna, see updated post.

                – Ehsan
                Jan 3 at 5:12
















              1














              Try This:






              var parId = prompt("Enter region parent id : " ) ;

              const regions = [
              {id:1,region_name:"Western province",region_parent_id:null},
              {id:2,region_name:"Colombo",region_parent_id:1},
              {id:3,region_name:"Gampaha",region_parent_id:1},
              {id:4,region_name:"Kaluthara",region_parent_id:1},
              {id:5,region_name:"Nugegoda",region_parent_id:2},
              {id:6,region_name:"Maharagama",region_parent_id:2},
              {id:7,region_name:"Central province",region_parent_id:null},
              {id:8,region_name:"Kandy",region_parent_id:7},
              {id:9,region_name:"Mathale",region_parent_id:7},
              {id:10,region_name:"theldeniya",region_parent_id:8},
              {id:11,region_name:"penideniya",region_parent_id:8}
              ]

              function belong(dis) {
              var getProvince = regions.find( e => e.id === dis ) ;
              if ( getProvince ) {
              console.log("==========" + getProvince.region_name + "==========" ) ;
              regions.map( c => {if (c.region_parent_id === dis ) console.log(c.region_name + " " + c.id +" Parent:(" + c.region_parent_id +")") } )
              }
              }

              belong( parseInt(parId) );








              share|improve this answer


























              • This works! =) and how could I get the cities which are belongs to a city. If I pass district id 2 how do I get the cities belongs to that district?

                – Pathum Samararathna
                Jan 3 at 4:31











              • @Ehsan, it seems like not that tough question, you should learn how to solve problem instead of ask for code. I think you can use Map data structure solve this problem.

                – 0day
                Jan 3 at 4:37











              • @PathumSamararathna, see updated post.

                – Ehsan
                Jan 3 at 5:12














              1












              1








              1







              Try This:






              var parId = prompt("Enter region parent id : " ) ;

              const regions = [
              {id:1,region_name:"Western province",region_parent_id:null},
              {id:2,region_name:"Colombo",region_parent_id:1},
              {id:3,region_name:"Gampaha",region_parent_id:1},
              {id:4,region_name:"Kaluthara",region_parent_id:1},
              {id:5,region_name:"Nugegoda",region_parent_id:2},
              {id:6,region_name:"Maharagama",region_parent_id:2},
              {id:7,region_name:"Central province",region_parent_id:null},
              {id:8,region_name:"Kandy",region_parent_id:7},
              {id:9,region_name:"Mathale",region_parent_id:7},
              {id:10,region_name:"theldeniya",region_parent_id:8},
              {id:11,region_name:"penideniya",region_parent_id:8}
              ]

              function belong(dis) {
              var getProvince = regions.find( e => e.id === dis ) ;
              if ( getProvince ) {
              console.log("==========" + getProvince.region_name + "==========" ) ;
              regions.map( c => {if (c.region_parent_id === dis ) console.log(c.region_name + " " + c.id +" Parent:(" + c.region_parent_id +")") } )
              }
              }

              belong( parseInt(parId) );








              share|improve this answer















              Try This:






              var parId = prompt("Enter region parent id : " ) ;

              const regions = [
              {id:1,region_name:"Western province",region_parent_id:null},
              {id:2,region_name:"Colombo",region_parent_id:1},
              {id:3,region_name:"Gampaha",region_parent_id:1},
              {id:4,region_name:"Kaluthara",region_parent_id:1},
              {id:5,region_name:"Nugegoda",region_parent_id:2},
              {id:6,region_name:"Maharagama",region_parent_id:2},
              {id:7,region_name:"Central province",region_parent_id:null},
              {id:8,region_name:"Kandy",region_parent_id:7},
              {id:9,region_name:"Mathale",region_parent_id:7},
              {id:10,region_name:"theldeniya",region_parent_id:8},
              {id:11,region_name:"penideniya",region_parent_id:8}
              ]

              function belong(dis) {
              var getProvince = regions.find( e => e.id === dis ) ;
              if ( getProvince ) {
              console.log("==========" + getProvince.region_name + "==========" ) ;
              regions.map( c => {if (c.region_parent_id === dis ) console.log(c.region_name + " " + c.id +" Parent:(" + c.region_parent_id +")") } )
              }
              }

              belong( parseInt(parId) );








              var parId = prompt("Enter region parent id : " ) ;

              const regions = [
              {id:1,region_name:"Western province",region_parent_id:null},
              {id:2,region_name:"Colombo",region_parent_id:1},
              {id:3,region_name:"Gampaha",region_parent_id:1},
              {id:4,region_name:"Kaluthara",region_parent_id:1},
              {id:5,region_name:"Nugegoda",region_parent_id:2},
              {id:6,region_name:"Maharagama",region_parent_id:2},
              {id:7,region_name:"Central province",region_parent_id:null},
              {id:8,region_name:"Kandy",region_parent_id:7},
              {id:9,region_name:"Mathale",region_parent_id:7},
              {id:10,region_name:"theldeniya",region_parent_id:8},
              {id:11,region_name:"penideniya",region_parent_id:8}
              ]

              function belong(dis) {
              var getProvince = regions.find( e => e.id === dis ) ;
              if ( getProvince ) {
              console.log("==========" + getProvince.region_name + "==========" ) ;
              regions.map( c => {if (c.region_parent_id === dis ) console.log(c.region_name + " " + c.id +" Parent:(" + c.region_parent_id +")") } )
              }
              }

              belong( parseInt(parId) );





              var parId = prompt("Enter region parent id : " ) ;

              const regions = [
              {id:1,region_name:"Western province",region_parent_id:null},
              {id:2,region_name:"Colombo",region_parent_id:1},
              {id:3,region_name:"Gampaha",region_parent_id:1},
              {id:4,region_name:"Kaluthara",region_parent_id:1},
              {id:5,region_name:"Nugegoda",region_parent_id:2},
              {id:6,region_name:"Maharagama",region_parent_id:2},
              {id:7,region_name:"Central province",region_parent_id:null},
              {id:8,region_name:"Kandy",region_parent_id:7},
              {id:9,region_name:"Mathale",region_parent_id:7},
              {id:10,region_name:"theldeniya",region_parent_id:8},
              {id:11,region_name:"penideniya",region_parent_id:8}
              ]

              function belong(dis) {
              var getProvince = regions.find( e => e.id === dis ) ;
              if ( getProvince ) {
              console.log("==========" + getProvince.region_name + "==========" ) ;
              regions.map( c => {if (c.region_parent_id === dis ) console.log(c.region_name + " " + c.id +" Parent:(" + c.region_parent_id +")") } )
              }
              }

              belong( parseInt(parId) );






              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Jan 3 at 7:23

























              answered Jan 3 at 4:27









              EhsanEhsan

              9,89531232




              9,89531232













              • This works! =) and how could I get the cities which are belongs to a city. If I pass district id 2 how do I get the cities belongs to that district?

                – Pathum Samararathna
                Jan 3 at 4:31











              • @Ehsan, it seems like not that tough question, you should learn how to solve problem instead of ask for code. I think you can use Map data structure solve this problem.

                – 0day
                Jan 3 at 4:37











              • @PathumSamararathna, see updated post.

                – Ehsan
                Jan 3 at 5:12



















              • This works! =) and how could I get the cities which are belongs to a city. If I pass district id 2 how do I get the cities belongs to that district?

                – Pathum Samararathna
                Jan 3 at 4:31











              • @Ehsan, it seems like not that tough question, you should learn how to solve problem instead of ask for code. I think you can use Map data structure solve this problem.

                – 0day
                Jan 3 at 4:37











              • @PathumSamararathna, see updated post.

                – Ehsan
                Jan 3 at 5:12

















              This works! =) and how could I get the cities which are belongs to a city. If I pass district id 2 how do I get the cities belongs to that district?

              – Pathum Samararathna
              Jan 3 at 4:31





              This works! =) and how could I get the cities which are belongs to a city. If I pass district id 2 how do I get the cities belongs to that district?

              – Pathum Samararathna
              Jan 3 at 4:31













              @Ehsan, it seems like not that tough question, you should learn how to solve problem instead of ask for code. I think you can use Map data structure solve this problem.

              – 0day
              Jan 3 at 4:37





              @Ehsan, it seems like not that tough question, you should learn how to solve problem instead of ask for code. I think you can use Map data structure solve this problem.

              – 0day
              Jan 3 at 4:37













              @PathumSamararathna, see updated post.

              – Ehsan
              Jan 3 at 5:12





              @PathumSamararathna, see updated post.

              – Ehsan
              Jan 3 at 5:12













              1














              Use filter in below way you will get your desired result.






              const regions = [
              {id:1,region_name:"Western province",region_parent_id:null},
              {id:2,region_name:"Colombo",region_parent_id:1},
              {id:3,region_name:"Gampaha",region_parent_id:1},
              {id:4,region_name:"Kaluthara",region_parent_id:1},
              {id:5,region_name:"Nugegoda",region_parent_id:2},
              {id:6,region_name:"Maharagama",region_parent_id:2},
              {id:7,region_name:"Central province",region_parent_id:null},
              {id:8,region_name:"Kandy",region_parent_id:7},
              {id:9,region_name:"Mathale",region_parent_id:7},
              {id:10,region_name:"theldeniya",region_parent_id:8},
              {id:11,region_name:"penideniya",region_parent_id:8}
              ];

              var province = regions.filter(e => !e.region_parent_id);

              province.forEach(p => {
              p.district = regions.filter(e => e.region_parent_id == p.id);
              // Uncomment following snippet if you want to have cities list inside district object also.
              //p.district.forEach(d => {
              // d.city = regions.filter(e => e.region_parent_id == d.id);
              //});

              var districtIds = p.district.map(d => d.id);
              p.city = regions.filter(e => districtIds.includes(e.region_parent_id));
              });

              console.log(province);








              share|improve this answer






























                1














                Use filter in below way you will get your desired result.






                const regions = [
                {id:1,region_name:"Western province",region_parent_id:null},
                {id:2,region_name:"Colombo",region_parent_id:1},
                {id:3,region_name:"Gampaha",region_parent_id:1},
                {id:4,region_name:"Kaluthara",region_parent_id:1},
                {id:5,region_name:"Nugegoda",region_parent_id:2},
                {id:6,region_name:"Maharagama",region_parent_id:2},
                {id:7,region_name:"Central province",region_parent_id:null},
                {id:8,region_name:"Kandy",region_parent_id:7},
                {id:9,region_name:"Mathale",region_parent_id:7},
                {id:10,region_name:"theldeniya",region_parent_id:8},
                {id:11,region_name:"penideniya",region_parent_id:8}
                ];

                var province = regions.filter(e => !e.region_parent_id);

                province.forEach(p => {
                p.district = regions.filter(e => e.region_parent_id == p.id);
                // Uncomment following snippet if you want to have cities list inside district object also.
                //p.district.forEach(d => {
                // d.city = regions.filter(e => e.region_parent_id == d.id);
                //});

                var districtIds = p.district.map(d => d.id);
                p.city = regions.filter(e => districtIds.includes(e.region_parent_id));
                });

                console.log(province);








                share|improve this answer




























                  1












                  1








                  1







                  Use filter in below way you will get your desired result.






                  const regions = [
                  {id:1,region_name:"Western province",region_parent_id:null},
                  {id:2,region_name:"Colombo",region_parent_id:1},
                  {id:3,region_name:"Gampaha",region_parent_id:1},
                  {id:4,region_name:"Kaluthara",region_parent_id:1},
                  {id:5,region_name:"Nugegoda",region_parent_id:2},
                  {id:6,region_name:"Maharagama",region_parent_id:2},
                  {id:7,region_name:"Central province",region_parent_id:null},
                  {id:8,region_name:"Kandy",region_parent_id:7},
                  {id:9,region_name:"Mathale",region_parent_id:7},
                  {id:10,region_name:"theldeniya",region_parent_id:8},
                  {id:11,region_name:"penideniya",region_parent_id:8}
                  ];

                  var province = regions.filter(e => !e.region_parent_id);

                  province.forEach(p => {
                  p.district = regions.filter(e => e.region_parent_id == p.id);
                  // Uncomment following snippet if you want to have cities list inside district object also.
                  //p.district.forEach(d => {
                  // d.city = regions.filter(e => e.region_parent_id == d.id);
                  //});

                  var districtIds = p.district.map(d => d.id);
                  p.city = regions.filter(e => districtIds.includes(e.region_parent_id));
                  });

                  console.log(province);








                  share|improve this answer















                  Use filter in below way you will get your desired result.






                  const regions = [
                  {id:1,region_name:"Western province",region_parent_id:null},
                  {id:2,region_name:"Colombo",region_parent_id:1},
                  {id:3,region_name:"Gampaha",region_parent_id:1},
                  {id:4,region_name:"Kaluthara",region_parent_id:1},
                  {id:5,region_name:"Nugegoda",region_parent_id:2},
                  {id:6,region_name:"Maharagama",region_parent_id:2},
                  {id:7,region_name:"Central province",region_parent_id:null},
                  {id:8,region_name:"Kandy",region_parent_id:7},
                  {id:9,region_name:"Mathale",region_parent_id:7},
                  {id:10,region_name:"theldeniya",region_parent_id:8},
                  {id:11,region_name:"penideniya",region_parent_id:8}
                  ];

                  var province = regions.filter(e => !e.region_parent_id);

                  province.forEach(p => {
                  p.district = regions.filter(e => e.region_parent_id == p.id);
                  // Uncomment following snippet if you want to have cities list inside district object also.
                  //p.district.forEach(d => {
                  // d.city = regions.filter(e => e.region_parent_id == d.id);
                  //});

                  var districtIds = p.district.map(d => d.id);
                  p.city = regions.filter(e => districtIds.includes(e.region_parent_id));
                  });

                  console.log(province);








                  const regions = [
                  {id:1,region_name:"Western province",region_parent_id:null},
                  {id:2,region_name:"Colombo",region_parent_id:1},
                  {id:3,region_name:"Gampaha",region_parent_id:1},
                  {id:4,region_name:"Kaluthara",region_parent_id:1},
                  {id:5,region_name:"Nugegoda",region_parent_id:2},
                  {id:6,region_name:"Maharagama",region_parent_id:2},
                  {id:7,region_name:"Central province",region_parent_id:null},
                  {id:8,region_name:"Kandy",region_parent_id:7},
                  {id:9,region_name:"Mathale",region_parent_id:7},
                  {id:10,region_name:"theldeniya",region_parent_id:8},
                  {id:11,region_name:"penideniya",region_parent_id:8}
                  ];

                  var province = regions.filter(e => !e.region_parent_id);

                  province.forEach(p => {
                  p.district = regions.filter(e => e.region_parent_id == p.id);
                  // Uncomment following snippet if you want to have cities list inside district object also.
                  //p.district.forEach(d => {
                  // d.city = regions.filter(e => e.region_parent_id == d.id);
                  //});

                  var districtIds = p.district.map(d => d.id);
                  p.city = regions.filter(e => districtIds.includes(e.region_parent_id));
                  });

                  console.log(province);





                  const regions = [
                  {id:1,region_name:"Western province",region_parent_id:null},
                  {id:2,region_name:"Colombo",region_parent_id:1},
                  {id:3,region_name:"Gampaha",region_parent_id:1},
                  {id:4,region_name:"Kaluthara",region_parent_id:1},
                  {id:5,region_name:"Nugegoda",region_parent_id:2},
                  {id:6,region_name:"Maharagama",region_parent_id:2},
                  {id:7,region_name:"Central province",region_parent_id:null},
                  {id:8,region_name:"Kandy",region_parent_id:7},
                  {id:9,region_name:"Mathale",region_parent_id:7},
                  {id:10,region_name:"theldeniya",region_parent_id:8},
                  {id:11,region_name:"penideniya",region_parent_id:8}
                  ];

                  var province = regions.filter(e => !e.region_parent_id);

                  province.forEach(p => {
                  p.district = regions.filter(e => e.region_parent_id == p.id);
                  // Uncomment following snippet if you want to have cities list inside district object also.
                  //p.district.forEach(d => {
                  // d.city = regions.filter(e => e.region_parent_id == d.id);
                  //});

                  var districtIds = p.district.map(d => d.id);
                  p.city = regions.filter(e => districtIds.includes(e.region_parent_id));
                  });

                  console.log(province);






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jan 3 at 5:32

























                  answered Jan 3 at 5:27









                  KaranKaran

                  3,3912525




                  3,3912525























                      1














                      Try this:



                      const regions = [
                      { id: 1, region_name: "Western province", region_parent_id: null },
                      { id: 2, region_name: "Colombo", region_parent_id: 1 },
                      { id: 3, region_name: "Gampaha", region_parent_id: 1 },
                      { id: 4, region_name: "Kaluthara", region_parent_id: 1 },
                      { id: 5, region_name: "Nugegoda", region_parent_id: 2 },
                      { id: 6, region_name: "Maharagama", region_parent_id: 2 },
                      { id: 7, region_name: "Central province", region_parent_id: null },
                      { id: 8, region_name: "Kandy", region_parent_id: 7 },
                      { id: 9, region_name: "Mathale", region_parent_id: 7 },
                      { id: 10, region_name: "theldeniya", region_parent_id: 8 },
                      { id: 11, region_name: "penideniya", region_parent_id: 8 }
                      ];

                      const provinces = regions.filter(region => !region.region_parent_id);
                      for (let i = 0; i < provinces.length; i++) {
                      const currentProvince = provinces[i];
                      // get districts for this now
                      currentProvince.districts = regions.filter(region => region.region_parent_id === currentProvince.id);
                      for (let j = 0; j < provinces[i].districts.length; j++) {
                      const currentDistrict = provinces[i].districts[j];
                      // get cities for the district
                      currentDistrict.cities = regions.filter(region => region.region_parent_id === currentDistrict.id);
                      }
                      }

                      console.log(provinces)





                      share|improve this answer




























                        1














                        Try this:



                        const regions = [
                        { id: 1, region_name: "Western province", region_parent_id: null },
                        { id: 2, region_name: "Colombo", region_parent_id: 1 },
                        { id: 3, region_name: "Gampaha", region_parent_id: 1 },
                        { id: 4, region_name: "Kaluthara", region_parent_id: 1 },
                        { id: 5, region_name: "Nugegoda", region_parent_id: 2 },
                        { id: 6, region_name: "Maharagama", region_parent_id: 2 },
                        { id: 7, region_name: "Central province", region_parent_id: null },
                        { id: 8, region_name: "Kandy", region_parent_id: 7 },
                        { id: 9, region_name: "Mathale", region_parent_id: 7 },
                        { id: 10, region_name: "theldeniya", region_parent_id: 8 },
                        { id: 11, region_name: "penideniya", region_parent_id: 8 }
                        ];

                        const provinces = regions.filter(region => !region.region_parent_id);
                        for (let i = 0; i < provinces.length; i++) {
                        const currentProvince = provinces[i];
                        // get districts for this now
                        currentProvince.districts = regions.filter(region => region.region_parent_id === currentProvince.id);
                        for (let j = 0; j < provinces[i].districts.length; j++) {
                        const currentDistrict = provinces[i].districts[j];
                        // get cities for the district
                        currentDistrict.cities = regions.filter(region => region.region_parent_id === currentDistrict.id);
                        }
                        }

                        console.log(provinces)





                        share|improve this answer


























                          1












                          1








                          1







                          Try this:



                          const regions = [
                          { id: 1, region_name: "Western province", region_parent_id: null },
                          { id: 2, region_name: "Colombo", region_parent_id: 1 },
                          { id: 3, region_name: "Gampaha", region_parent_id: 1 },
                          { id: 4, region_name: "Kaluthara", region_parent_id: 1 },
                          { id: 5, region_name: "Nugegoda", region_parent_id: 2 },
                          { id: 6, region_name: "Maharagama", region_parent_id: 2 },
                          { id: 7, region_name: "Central province", region_parent_id: null },
                          { id: 8, region_name: "Kandy", region_parent_id: 7 },
                          { id: 9, region_name: "Mathale", region_parent_id: 7 },
                          { id: 10, region_name: "theldeniya", region_parent_id: 8 },
                          { id: 11, region_name: "penideniya", region_parent_id: 8 }
                          ];

                          const provinces = regions.filter(region => !region.region_parent_id);
                          for (let i = 0; i < provinces.length; i++) {
                          const currentProvince = provinces[i];
                          // get districts for this now
                          currentProvince.districts = regions.filter(region => region.region_parent_id === currentProvince.id);
                          for (let j = 0; j < provinces[i].districts.length; j++) {
                          const currentDistrict = provinces[i].districts[j];
                          // get cities for the district
                          currentDistrict.cities = regions.filter(region => region.region_parent_id === currentDistrict.id);
                          }
                          }

                          console.log(provinces)





                          share|improve this answer













                          Try this:



                          const regions = [
                          { id: 1, region_name: "Western province", region_parent_id: null },
                          { id: 2, region_name: "Colombo", region_parent_id: 1 },
                          { id: 3, region_name: "Gampaha", region_parent_id: 1 },
                          { id: 4, region_name: "Kaluthara", region_parent_id: 1 },
                          { id: 5, region_name: "Nugegoda", region_parent_id: 2 },
                          { id: 6, region_name: "Maharagama", region_parent_id: 2 },
                          { id: 7, region_name: "Central province", region_parent_id: null },
                          { id: 8, region_name: "Kandy", region_parent_id: 7 },
                          { id: 9, region_name: "Mathale", region_parent_id: 7 },
                          { id: 10, region_name: "theldeniya", region_parent_id: 8 },
                          { id: 11, region_name: "penideniya", region_parent_id: 8 }
                          ];

                          const provinces = regions.filter(region => !region.region_parent_id);
                          for (let i = 0; i < provinces.length; i++) {
                          const currentProvince = provinces[i];
                          // get districts for this now
                          currentProvince.districts = regions.filter(region => region.region_parent_id === currentProvince.id);
                          for (let j = 0; j < provinces[i].districts.length; j++) {
                          const currentDistrict = provinces[i].districts[j];
                          // get cities for the district
                          currentDistrict.cities = regions.filter(region => region.region_parent_id === currentDistrict.id);
                          }
                          }

                          console.log(provinces)






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Jan 3 at 5:37









                          Muhammad ZaibMuhammad Zaib

                          1417




                          1417






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54016124%2fjavascript-filter-based-on-id%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              generate and download xml file after input submit (php and mysql) - JPK

                              Angular Downloading a file using contenturl with Basic Authentication

                              Can't read property showImagePicker of undefined in react native iOS