【问题标题】:findIndex keeps on returning -1 from jsonfindIndex 不断从 json 返回 -1
【发布时间】:2019-08-23 02:14:32
【问题描述】:

我正在将一些来自 redux 状态的上下文数据(使用钩子)传递给我当前的组件。 我只需要从 redux 状态中找到一个特定值并放入本地组件的状态。

我正在使用 findIndex。

虽然根据我的 console.log 应该找到匹配项,但它仍然不断返回 -1

我已经浏览了几个小时的 stackoverflow 和谷歌搜索并尝试了每个示例 + 尝试操纵它,但没有运气。

来自 Redux 的状态(列表)状态,

[
      {
        userId: 2,
        id: 11,
        title: 'et ea vero quia laudantium autem',
        body: 'delectus reiciendis molestiae occaecati non minima eveniet qui voluptatibus\naccusamus in eum beatae sit\nvel qui neque voluptates ut commodi qui incidunt\nut animi commodi'
      },
      {
        userId: 2,
        id: 12,
        title: 'in quibusdam tempore odit est dolorem',
        body: 'itaque id aut magnam\npraesentium quia et ea odit et ea voluptas et\nsapiente quia nihil amet occaecati quia id voluptatem\nincidunt ea est distinctio odio'
      },
      {
        userId: 2,
        id: 13,
        title: 'dolorum ut in voluptas mollitia et saepe quo animi',
        body: 'aut dicta possimus sint mollitia voluptas commodi quo doloremque\niste corrupti reiciendis voluptatem eius rerum\nsit cumque quod eligendi laborum minima\nperferendis recusandae assumenda consectetur porro architecto ipsum ipsam'
      },
      {
        userId: 2,
        id: 14,
        title: 'voluptatem eligendi optio',
        body: 'fuga et accusamus dolorum perferendis illo voluptas\nnon doloremque neque facere\nad qui dolorum molestiae beatae\nsed aut voluptas totam sit illum'
      },
      {
        userId: 2,
        id: 15,
        title: 'eveniet quod temporibus',
        body: 'reprehenderit quos placeat\nvelit minima officia dolores impedit repudiandae molestiae nam\nvoluptas recusandae quis delectus\nofficiis harum fugiat vitae'
      },
      {
        userId: 2,
        id: 16,
        title: 'sint suscipit perspiciatis velit dolorum rerum ipsa laboriosam odio',
        body: 'suscipit nam nisi quo aperiam aut\nasperiores eos fugit maiores voluptatibus quia\nvoluptatem quis ullam qui in alias quia est\nconsequatur magni mollitia accusamus ea nisi voluptate dicta'
      },
      {
        userId: 2,
        id: 17,
        title: 'fugit voluptas sed molestias voluptatem provident',
        body: 'eos voluptas et aut odit natus earum\naspernatur fuga molestiae ullam\ndeserunt ratione qui eos\nqui nihil ratione nemo velit ut aut id quo'
      },
      {
        userId: 2,
        id: 18,
        title: 'voluptate et itaque vero tempora molestiae',
        body: 'eveniet quo quis\nlaborum totam consequatur non dolor\nut et est repudiandae\nest voluptatem vel debitis et magnam'
      },
      {
        userId: 2,
        id: 19,
        title: 'adipisci placeat illum aut reiciendis qui',
        body: 'illum quis cupiditate provident sit magnam\nea sed aut omnis\nveniam maiores ullam consequatur atque\nadipisci quo iste expedita sit quos voluptas'
      },
      {
        userId: 2,
        id: 20,
        title: 'doloribus ad provident suscipit at',
        body: 'qui consequuntur ducimus possimus quisquam amet similique\nsuscipit porro ipsam amet\neos veritatis officiis exercitationem vel fugit aut necessitatibus totam\nomnis rerum consequatur expedita quidem cumque explicabo'
      }
    ]
useEffect(() => {

if(list){
  let allSectionsCopy = JSON.parse(JSON.stringify(list));
  console.log(allSectionsCopy); // outputs the above array

  let sectionIndex = allSectionsCopy.findIndex(
   item => item.id === param.id
);

console.log(param.id) //returns 16 (because my react route is /dashboard/16 )

console.log(sectionIndex) // this returns -1 

// let sectionToUpdate = allSectionsCopy[sectionIndex];

// setPage(sectionToUpdate) 

}
}, [state]);

索引返回 -1 而不是 5

任何帮助将不胜感激。

提前致谢

【问题讨论】:

    标签: arrays reactjs indexing redux react-hooks


    【解决方案1】:

    看起来 param.id 是一个字符串,而您的索引是一个整数。

    【讨论】:

    • 哇,这么小的东西,不敢相信我忽略了它。让它像这样parseInt(page.id) === parseInt(param.id) 并且效果很好。谢谢!
    • 这是给你的 JavaScript! :)
    猜你喜欢
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多