Angular2 Typescript如何从对象内部检索数组

时间:2017-05-21 09:58:25

标签: javascript json angular object typescript

当我执行以下的console.log时:

console.log(this.categories);

我得到了这个结构:

enter image description here

是从这个来自api的json创建的:

[
  {
  "id":"dff0bb3e-889f-43e6-b955-52cc7203952f",
  "name":"Wood",
  "category_types":[
     {
        "id":"49b31f43-d98d-43c8-9798-088ec6914fe5",
        "name":"Solid"
     },
     {
        "id":"8592716a-ffd5-4e97-ba9e-6a64ba6e48f1",
        "name":"Engineered"
     }
  ]
  },
  {
  "id":"6b2b6914-6c64-4389-a327-be3f08fd066d",
  "name":"Carpet",
  "category_types":[
     {
        "id":"0e2c8473-90fb-4806-a6e7-2389eeb0f9e4",
        "name":"Loop pile"
     },
     {
        "id":"3c762653-4f0d-42d2-a84e-133c7051c95b",
        "name":"Cut pile"
     },
     {
        "id":"0997d4dc-e886-46ef-83b4-d90c4fb72553",
        "name":"Cut \u0026 loop pile"
     }
  ]
  }
]

鉴于我有价值' Wood'在名为value的字符串变量中,如何获取Wood对象的category_types数组?

console.log(this.categories[value]);

返回undefined。

2 个答案:

答案 0 :(得分:4)

您想要找到名称为' Wood'的对象,然后获取category_typesArray.prototype.find返回满足所提供测试函数中条件的第一个值。在您的情况下,它可能如下所示:

this.categories.find(value => value.name === 'Wood').category_types

答案 1 :(得分:1)

您可以使用Array.filter

let wood = this.categories.filter(category => {
  return category.name === "Wood";
})[0];

这将过滤您的类别以检索名称为wood的类别,然后您选择第一个类别。如果您在数组中找不到name === "Wood"的任何内容,那么它将为undefined

相关问题