【问题标题】:Array.filter is not working properly for the array, include objectsArray.filter 不适用于数组,包括对象
【发布时间】:2021-12-28 10:11:47
【问题描述】:

我有一个这样的数组。

我只需要branchId。所以我使用filter方法过滤这个数组并将branchId存储在react状态。

 const [branchID,setBranchID]=React.useState([]);
 const tempTwo=[
       {
          branchId: "61b25e0ae177d62ce4cb3b47",
          branchName: "Shopzier Malabe Branch"
       },
       {
          branchId: "61aa4f802aed6f0022102a99"
          branchName: "Test Branch New Update"
      },
      {
         branchId: "619f346f17b5522b184d5c01",
         branchName: "Shopzier Main Branch Update Trest12"
      }
   ]
 React.useEffect(()=>{
    setBranchID([...tempTwo.filter(item=>item.branchId)])
  },[])

但是当我控制台记录 branchID 时,它会打印我的完整数组,而不仅仅是 branchID。 如何从我的对象数组中过滤 branchID。我不知道出了什么问题,为什么会这样。如果有人可以帮助我,我真的很感激。谢谢。

【问题讨论】:

  • 过滤器完全按预期工作。也许你需要map
  • 您使用了错误的数组方法,应该使用tempTwo.map(item => item.branchId) Map 方法将返回一个新数组,您也不需要扩展运算符
  • 您打算改用.map 吗? tempTwo.map(i => i.branchId)
  • 使用map 而不是filter
  • 感谢大家的回答。到目前为止,我对过滤方法的想法是错误的。❤️

标签: javascript arrays reactjs object


【解决方案1】:

我认为您误解了过滤器功能的实际作用。

您应该使用 map 运算符来提取您的数组中的一个属性,如下所示:

 React.useEffect(()=>{
    setBranchID([...tempTwo.map(item=>item.branchId)])
  },[])

【讨论】:

  • 感谢您的回答。到目前为止,我对过滤方法的想法是错误的。❤️
  • 你不需要传播,map() 已经返回了一个新数组。 setBranchID(tempTwo.map(item=>item.branchId))
【解决方案2】:

Filter 用于过滤掉所有符合给定条件的对象,在你的情况下,有一个 id。要仅从列表中获取 id,您需要使用 map

const idList = tempTwo.map(item=> item.branchId)

【讨论】:

【解决方案3】:

简单的方法来做到这一点。 您可以使用 map 函数和 matchId 来从数组中提取数据。

const [branchID,setBranchID]=React.useState("");
 const tempTwo=[
       {
          branchId: "61b25e0ae177d62ce4cb3b47",
          branchName: "Shopzier Malabe Branch"
       },
       {
          branchId: "61aa4f802aed6f0022102a99"
          branchName: "Test Branch New Update"
      },
      {
         branchId: "619f346f17b5522b184d5c01",
         branchName: "Shopzier Main Branch Update Trest12"
      }
   ]
 React.useEffect(()=>{
    tempTwo.map((branchData, i) => {
      //match your branch id value
      if (branchData.branchId === some_id) {
        setBranchID(branchData.branchId)
      }
    })
  },[])

【讨论】:

  • 感谢您的回答以及有关我的问题的更多详细信息。❤️
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2012-07-29
  • 2016-04-24
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
相关资源
最近更新 更多