访问不在数组中的json子对象

时间:2019-06-12 18:20:11

标签: javascript angular

我正在尝试访问不在数组中的json子对象。我尝试使用下面的脚本访问它,但无法正常工作。我希望能够访问menuCategory对象

JSON

 [
  {
    "id": 67,
    "name": "Wednesday Menu",
    "serveDate": "2019-06-12 00:00:00",
    "expiryDate": "2019-06-12 16:11:00",
    "status": "APPROVED",
    "isEnabled": true,
    "meals": [
      {
        "id": 45,
        "name": "Waakye, Gari and Wele",
        "description": "A very well designed food for all kids",
        "image": "",
        "mealType": "LUNCH",
        "unitPrice": 30,
        "status": "ENABLED"
      },
      {
        "id": 46,
        "name": "Gari and Beans",
        "description": "A very well designed food for all kidsss",
        "image": "",
        "mealType": "LUNCH",
        "unitPrice": 12,
        "status": "ENABLED"
      }
    ],
    "menuCategory": {
      "id": 2,
      "name": "hello"
    }
  }
]

JAVASCRIPT

callEditMenu(parent, content) {
  this.modalService.open(content);
  this.editMenuCategoryId = parent.menuCategory.id;
}

4 个答案:

答案 0 :(得分:1)

可能像

const parent = [{"id":67,"name":"Wednesday Menu","serveDate":"2019-06-12 00:00:00","expiryDate":"2019-06-12 16:11:00","status":"APPROVED","isEnabled":true,"meals":[{"id":45,"name":"Waakye, Gari and Wele","description":"A very well designed food for all kids","image":"","mealType":"LUNCH","unitPrice":30,"status":"ENABLED"},{"id":46,"name":"Gari and Beans","description":"A very well designed food for all kidsss","image":"","mealType":"LUNCH","unitPrice":12,"status":"ENABLED"}],"menuCategory":{"id":2,"name":"hello"}}]

console.log(parent[0].menuCategory.id);

答案 1 :(得分:1)

如果callEditMenu函数中的父参数引用了您包含的JSON,请尝试parent[0].menuCategory.id

答案 2 :(得分:0)

let arr = [{"id":67,"name":"Wednesday Menu","serveDate":"2019-06-12 00:00:00","expiryDate":"2019-06-12 16:11:00","status":"APPROVED","isEnabled":true,"meals":[{"id":45,"name":"Waakye, Gari and Wele","description":"A very well designed food for all kids","image":"","mealType":"LUNCH","unitPrice":30,"status":"ENABLED"},{"id":46,"name":"Gari and Beans","description":"A very well designed food for all kidsss","image":"","mealType":"LUNCH","unitPrice":12,"status":"ENABLED"}],"menuCategory":{"id":2,"name":"hello"}}]

for (let item of arr)  {
  if (item.hasOwnProperty("menuCategory")) {
    console.log(item["menuCategory"]);
  }
};

let res = arr.filter((item) => item && item.menuCategory);
console.log(res[0].menuCategory);

如果您需要动态查找它。以上是两种不同的方式

答案 3 :(得分:0)

考虑到对象数组中会有多个项目,您可以遍历每个对象以获得menuCategory名称为

let obj = [
  {
    "id": 67,
    "name": "Wednesday Menu",
    "serveDate": "2019-06-12 00:00:00",
    "expiryDate": "2019-06-12 16:11:00",
    "status": "APPROVED",
    "isEnabled": true,
    "meals": [
      {
        "id": 45,
        "name": "Waakye, Gari and Wele",
        "description": "A very well designed food for all kids",
        "image": "",
        "mealType": "LUNCH",
        "unitPrice": 30,
        "status": "ENABLED"
      },
      {
        "id": 46,
        "name": "Gari and Beans",
        "description": "A very well designed food for all kidsss",
        "image": "",
        "mealType": "LUNCH",
        "unitPrice": 12,
        "status": "ENABLED"
      }
    ],
    "menuCategory": {
      "id": 2,
      "name": "hello"
    }
  }
];

obj.forEach(elem => {
  console.log(elem.menuCategory.name);
});