为什么我检查这个数组是否进入JSON文档无法使用JavaScript? [重复]

问题描述 投票:-4回答:2

这个问题在这里已有答案:

我正在检查JSON对象是否包含特定属性。

我有这个JSON文档:

{
    "market_name": "Dakar",
    "market_description": "Tambacounda Market N1",
    "localization_id": 2,
    "long": 13.776796,
    "lat": -13.672198,
    "country": "Senegal",
    "regione": {
        "@nil": "true"
    },
    "province": {
        "@nil": "true"
    },
    "city": {
        "@nil": "true"
    },
    "district": {
        "@nil": "true"
    },
    "town": {
        "@nil": "true"
    },
    "village": {
        "@nil": "true"
    },
    "commoditiesList": {
        "commodity": [{
            "commodity_details_id": 8,
            "commodity_name_en": "Carrot",
            "commodity_name": "Carrot",
            "description": "Carrot",
            "image_link": "https://firebasestorage.googleapis.com/v0/b/fao-digital-services-portfolio.appspot.com/o/img%2Ficons%2Fagrimarket%2Fcommodity%2Fcarrot.png?alt=media&token=f295c6b3-abf8-4b51-97c9-582d9188675f",
            "market_commodity_details_id": 26,
            "price_series_id": 9,
            "last_price_date": "2017-12-18+01:00",
            "last_avg_price": 48.37,
            "currency": "XOF",
            "measure_unit": "kilogram"
        },
        {
            "commodity_details_id": 4,
            "commodity_name_en": "Red onion",
            "commodity_name": "Red onion",
            "description": "Red onion",
            "image_link": "https://firebasestorage.googleapis.com/v0/b/fao-digital-services-portfolio.appspot.com/o/img%2Ficons%2Fagrimarket%2Fcommodity%2Fonion-red.png?alt=media&token=4ec9de4e-6e5a-4198-9bcd-21b692760618",
            "market_commodity_details_id": 24,
            "price_series_id": 11,
            "last_price_date": "2017-12-18+01:00",
            "last_avg_price": 33.33,
            "currency": "XOF",
            "measure_unit": "kilogram"
        },
        {
            "commodity_details_id": 6,
            "commodity_name_en": "Green Beans",
            "commodity_name": "Green Beans",
            "description": "Green Beans",
            "image_link": "https://firebasestorage.googleapis.com/v0/b/fao-digital-services-portfolio.appspot.com/o/img%2Ficons%2Fagrimarket%2Fcommodity%2Fgreen_beens.png?alt=media&token=5022f2c8-5751-4dd3-b695-2518e9586943",
            "market_commodity_details_id": 25,
            "price_series_id": 17,
            "last_price_date": "2017-12-18+01:00",
            "last_avg_price": 778,
            "currency": "XOF",
            "measure_unit": "kilogram"
        }]
    }
}

我想检查在这个JSON文档中是否存在commodity数组到commodityList对象中。

如果我尝试使用这个表达式:

response.hasOwnProperty('commoditiesList.commodity')

它返回false,我无法理解为什么。

commoditiesList包装器对象上测试:

 response.hasOwnProperty('commoditiesList') 

它工作正常。

我错过了什么?

javascript json
2个回答
5
投票

您只能使用hasOwnProperty检查一级属性。

const obj = {
  a: {
    b: 5
  }
};

console.log(obj.hasOwnProperty('a.b'));

实际上你可以拥有一个名为commoditiesList.commodity的财产,所以为什么它无法确定你是指自己的财产还是财产的财产。它的子对象的属性不是它自己的属性。

const obj = {
  'commoditiesList.commodity': 5
};

console.log(obj.hasOwnProperty('commoditiesList.commodity'));

如果你想检查commodity的存在,你可以尝试类似的东西

if(obj.commoditiesList && obj.commoditiesList.commodity) {

}

0
投票

response.commoditiesList.hasOwnProperty('commodity') // will return true

© www.soinside.com 2019 - 2024. All rights reserved.