如何在对象上使用过滤器

问题描述 投票:0回答:1

我的项目希望我使用一个名为

filterBooks
的函数。该函数的目的是根据搜索输入过滤书籍。它希望我使用
helper.js
中名为
flattenObjectValuesIntoArray
的函数。该函数循环遍历
booklist.js
中的 books 对象,并将对象键扁平化为数组,以便我们通过输入值搜索整个对象。

这是确切的说明:

filterBooks() 函数接受搜索字符串和书籍列表作为参数,并将包含搜索输入精确匹配的所有书籍作为对象数组返回。该数组中的对象应格式化为具有标题、作者和标签属性的书籍,类似于原始书籍数组。它应该使用 flattenObjectValuesIntoArray() 函数轻松搜索图书对象中的所有字段。

const filterBooks = (books, barInput) => {
  return books.filter((book) => {
   const values = flattenObjectValuesIntoArray([book]); // Flatten book into values
   return values.some((value) =>
      value.toString().toLowerCase().includes(barInput.toLowerCase())
   );
  });
};

我期望的是,当我从 Books 对象中键入一个值时,

filterBooks
函数将返回具有该单词或值的书籍。但当我在搜索栏中搜索一个词时,什么也没发生。

javascript object filter
1个回答
0
投票

您能分享一下 flattenObjectValuesIntoArray 函数是如何实现的吗?潜在的问题可能是您将 book 包装到数组中。另一个问题是 books 对象/数组的结构是什么。

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