Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何筛选与URL参数相同的id?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何筛选与URL参数相同的id?

Javascript 如何筛选与URL参数相同的id?,javascript,reactjs,Javascript,Reactjs,我有一个类似这样的模拟数据库 [ { "id": 1, "jobTitle": "Budget/Accounting Analyst III", "companyName": "Topiclounge", "city": "Duluth", "state": "Minnesota&qu

我有一个类似这样的模拟数据库

[
  {
    "id": 1,
    "jobTitle": "Budget/Accounting Analyst III",
    "companyName": "Topiclounge",
    "city": "Duluth",
    "state": "Minnesota",
    "country": "United States",
    "jobDescription": "egestas metus aenean fermentum donec ut mauris eget massa tempor convallis nulla neque libero convallis eget eleifend luctus ultricies eu nibh quisque id justo sit amet sapien dignissim vestibulum vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae nulla dapibus dolor vel est donec odio justo sollicitudin ut suscipit a feugiat et eros",
    "datePosted": "1/23/2020"
  }, 
...
]
等等

我想从urlParams检索id与我从useParams()获取的id匹配的对象; 我正在使用此axios.get请求

const getJobById = async () => {
    try {
      const response = await Axios.get(`https://api.jsonbin.io/b/5ff798661d107958ae4ca82b`)
      console.log(response.data, id)
      const job = response.data.filter(item => item.id === id)[0]
      console.log(job)
    } catch (error) {
      console.log(error)
    }
  }
为了从模拟api中检索数据并筛选出与此id匹配的对象,我从console.log(job)中得到了一个未定义的
如何以正确的方式筛选此数据?

您可以使用
response.data.find(item=>item.id==id)
,但这可能无法解决您的问题

为了能够进一步帮助您,请您将这一行打印到控制台中的内容分享给我们:

console.log(response.data,id)

根据OP在下面评论中的回应,问题在于
==
也在检查相同的类型。由于变量id是一个字符串,并且api输出对象中id键的值是一个数字
item.id==id
将始终返回false。在本例中,您可以只使用
=
,也可以将字符串id转换为数字:
id=Number(id)

或者只是OP为解决这个问题实际做了什么:

item.id === parseInt(id)

你在哪里声明你的
id
变量?它看起来像数组[{…},{…},{…},{…}]中的1000个对象,id是object中的一个属性。你能多分享一点你的代码吗?其中是在筛选器函数中使用的声明变量id,它有哪个值?const{id}=useParams(),id是“URL”中的值,例如/job detail/1,id应该是1。id可以是一个字符串,因为它来自URL。请使用以下代码检查:
console.log(typeof id)
并让我知道输出是什么。我已编辑了您的答案,以包含您以上评论中的实际解决方案。