在对象数组中选择嵌套的对象数组

时间:2018-04-09 00:54:02

标签: angular typescript

我的数据结构:

const obj = {
    "data": [
        {
            "id": 1,
            "name": "Genre 1",
            "books": [
                { "id": 1, "name": "book 1" },
                { "id": 2, "name": "book 2" },
                { "id": 3, "name": "book 3" }
            ]
        },
        {
            "id": 2,
            "name": "Genre 2",
            "books": [
                { "id": 1, "name": "book 1" },
                { "id": 2, "name": "book 2" },
                { "id": 3, "name": "book 3" }
            ]
        },
        {
            "id": 3,
            "name": "Genre 3",
            "books": [
                { "id": 1, "name": "book 1" },
                { "id": 2, "name": "book 2" },
                { "id": 3, "name": "book 3" }
            ]
        }
    ]
};

如果给出了id,我如何将适当的书籍数组分配给1 常量?

3 个答案:

答案 0 :(得分:4)

您可以使用.find()找到正确的对象,然后访问books数组。

const books = data.find(d => d.id === id).books;

这假设data是一个对象数组。如果您确实拥有一个带有“数据”键的对象,那么它将更接近于此:

const obj = {
  "data": [
    {
      "id": 1,
      "name": "Genre 1",
      "books": [
          { "id": 1, "name": "book 1" },
          { "id": 2, "name": "book 2" },
          { "id": 3, "name": "book 3" }
       ]
    },
    {
      "id": 2,
      "name": "Genre 2",
      "books": [
          { "id": 1, "name": "book 1" },
          { "id": 2, "name": "book 2" },
          { "id": 3, "name": "book 3" }
      ]
    },
    {
      "id": 3,
      "name": "Genre 3",
      "books": [
        { "id": 1, "name": "book 1" },
        { "id": 2, "name": "book 2" },
        { "id": 3, "name": "book 3" }
      ]
  }
]};

const books = obj.data.find(d => d.id === id).books;
.find()

Reference

答案 1 :(得分:0)

如何查找具有特定ID的图书的基本示例

const id_you_are_looking_for = 1;

const answer = obj.data.find(x => x.id === id_you_are_looking_for).books;

你可以用它来制作一个功能......

function returnBooksById(obj, id) {
    return obj.data.find(x => x.id === id).books;
}

或使用箭头功能......

const returnBooksById = (obj, id) => obj.data.find(x => x.id === id).books;

或者,如果你使用像Lodash这样的库和ES6,那就像这样简单......

import { find } from 'lodash';
const id = 1
const books = find(obj, { id }).books;

答案 2 :(得分:0)

如何查找具有特定 ID 的图书的基本示例

const result = data.books.filter(x => x.id == 1);
console.log(result);