代码之家  ›  专栏  ›  技术社区  ›  Krisna

如果id匹配,JavaScript过滤器应返回数组

  •  0
  • Krisna  · 技术社区  · 4 年前

    我有书籍资料。如果书籍与作者的id匹配,我想返回它们。当我试图筛选出与“作者”id不匹配的数据时,它总是返回所有书籍数据。

    const author = "AUTHOR#e9bb9d29-7f20-4fce-892c-6a155dbee42c";
    
    const Book = [
      {
        publishingYear: "2020",
        rating: 5.2,
        GSI1SK: "AUTHOR#a731ea70-f3f3-4811-9734-f22c0856385d",
        genre: ["adventure", "drama", "scifi"],
        GSI1PK: "AUTHOR",
        page: 100,
        publisher: "Afternoon pub",
        SK: "BOOK#c4a58f20-4977-4db8-9723-0185f68cdf01",
        price: "3.50",
        PK: "BOOKS",
        author: "Krishna",
        title: "Me and mySelf"
      },
      {
        publishingYear: "2020",
        rating: 5.2,
        GSI1SK: "AUTHOR#6b7c10ff-0e2c-46bd-9697-3b51730d8b29",
        genre: ["adventure", "drama", "scifi"],
        GSI1PK: "AUTHOR",
        page: 100,
        publisher: "Day pub",
        SK: "BOOK#e4773a32-5451-42c6-a3f1-a6aa45176256",
        price: "3.50",
        PK: "BOOKS",
        author: "John doe",
        title: "Hello world"
      },
      {
        publishingYear: "2020",
        rating: 5.2,
        GSI1SK: "AUTHOR#a731ea70-f3f3-4811-9734-f22c0856385d",
        genre: ["adventure", "drama", "scifi"],
        GSI1PK: "AUTHOR",
        page: 100,
        publisher: "Night Pub",
        SK: "BOOK#fb56a876-41bc-49f9-9762-c48e90af3117",
        price: "3.50",
        PK: "BOOKS",
        author: "Krishna",
        title: "Amazing Race"
      }
    ];
    
    const Books = Book.filter((i) => {
      console.log(i.GSI1SK);
      i.GSI1SK === author;
      return i;
    });
    
    console.log(Books);
    0 回复  |  直到 4 年前
        1
  •  2
  •   Rahul Pal    4 年前

    你使用过滤器的方式不对,你应该根据匹配的条件返回true或false,

    const Books = Book.filter((i) => {
      console.log(i.GSI1SK);
      return i.GSI1SK === author;
    });
    
        2
  •  2
  •   SeongJaeSong    4 年前

    并且可以省略不必要的行。试试这个。

    const Books = Book.filter(i => i.GSI1SK === author)