首页 > 解决方案 > How to extract values from top level, by checking nested value?

问题描述

I need to extract all organizer_inn and organizer_name if suppliers winner is "True".

For example I need extract all organizer_inn where 0278197430.

My code is next:

var data = [{
        "registration_number": "0301300020720000004",
        "organizer_name": "Foo",
        "organizer_inn": "026814121",
        "fas_complaints": "False",
        "lots": {
                "suppliers": [{
                        "winner": "True",
                        "inn": "0278209090"
                }]
        }
}, 
{
        "registration_number": "0301300020720000004",
        "organizer_name": "Bar",
        "organizer_inn": "0268019693",
        "fas_complaints": "False",
        "lots": {
                "suppliers": [{
                        "winner": "True",
                        "inn": "0278209090"
                }]
        }
},


{
        "registration_number": "0301300020720000002",
        "organizer_name": "Bar2",
        "organizer_inn": "7243435493",
        "fas_complaints": "False",
        "lots": {
                "suppliers": [{
                        "winner": "False",
                        "inn": "0278197430"

                }, {
                        "winner": "False",
                        "inn": "0278216877"
                }, {
                        "winner": "True",
                        "inn": "0268021212"
                }]
        }
}, {
        "registration_number": "0301300020720000003",
        "organizer_name": "some",
        "organizer_inn": "0234534533",
        "fas_complaints": "False",
        "lots": {
                "suppliers": [{
                        "winner": "True",
                        "inn": "0278197430"
                }]
        }
} ]

// I tried to start with ... 
data.forEach(el => el.lots.suppliers.forEach( s => {
        if(s.inn == "0278197430") 
        {
          if(s.winner == "True") {

          }
        }
}
) )

Could anybody help?

标签: javascriptalgorithm

解决方案


var data = [{
    "registration_number": "0301300020720000004",
    "organizer_name": "Foo",
    "organizer_inn": "026814121",
    "fas_complaints": "False",
    "lots": {
      "suppliers": [{
        "winner": "True",
        "inn": "0278209090"
      }]
    }
  },
  {
    "registration_number": "0301300020720000004",
    "organizer_name": "Bar",
    "organizer_inn": "0268019693",
    "fas_complaints": "False",
    "lots": {
      "suppliers": [{
        "winner": "True",
        "inn": "0278209090"
      }]
    }
  },


  {
    "registration_number": "0301300020720000002",
    "organizer_name": "Bar2",
    "organizer_inn": "7243435493",
    "fas_complaints": "False",
    "lots": {
      "suppliers": [{
        "winner": "False",
        "inn": "0278197430"

      }, {
        "winner": "False",
        "inn": "0278216877"
      }, {
        "winner": "True",
        "inn": "0268021212"
      }]
    }
  }, {
    "registration_number": "0301300020720000003",
    "organizer_name": "some",
    "organizer_inn": "0234534533",
    "fas_complaints": "False",
    "lots": {
      "suppliers": [{
        "winner": "True",
        "inn": "0278197430"
      }]
    }
  }
]

const output = [];
data.forEach(item => {
  if (item.lots.suppliers.findIndex(s => s.winner === "True" && s.inn === '0278197430' ) !== -1)
    output.push({
      organizer_inn: item.organizer_inn,
      organizer_name: item.organizer_name,
    });
});

console.log(output);


推荐阅读