【问题标题】:Filter an array which is inside an object by clicking on a button using React js通过使用 React js 单击按钮来过滤对象内部的数组
【发布时间】:2022-11-18 04:19:50
【问题描述】:

我有一个 API。当我点击一个按钮时,我想过滤标签数据,这些数据是数组,这些数组在他们的 对象。这就是我所做的。它不会在此代码中返回任何内容。我需要你能做的任何帮助。

这是我的代码:

const hashtagsHandler = (event, title) => {
  const eventData = event.target.innerText;
  console.log(eventData);
  const filter = bookData.filter((items) => {
    items.hashtags.map((item) => item === eventData);
  });
  console.log(filter);
  if (filter.length !== 0) {
    setHashtag(filter);
    setAllFilter((prevState) => [...prevState], hashtag);
  }
};

我的 API 是这样的:

"data": [
 {
  "id": 1,
  "name": "name",
  "typename": "book",
  "hashtags": [
    "a",
    "b",
  ],
 }
]

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    您的 filter 函数不起作用,因为它不返回任何内容,该函数应该返回一个布尔值,以便它知道要过滤掉什么以及保留什么。像这样:

    function isBigEnough(value) {
      return value >= 10;
    }
    
    const filtered = [12, 5, 8, 130, 44].filter((value) => {
      return value >= 10;
    });
    

    在这里阅读更多相关信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

    要更正您的代码,您可以这样做:

    const filter = bookData.filter((item) => item.hashtags.includes('a'));
    

    【讨论】:

      【解决方案2】:
      const filteredData = bookData.filter(
        (items) => items.hashtags.filter((item) => item === eventData).length !== 0
      );
      console.log(filteredData);
      

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2021-07-08
        • 1970-01-01
        • 1970-01-01
        • 2020-07-25
        • 2021-07-31
        • 2019-07-18
        相关资源
        最近更新 更多