【问题标题】:findIndex returning undefined instead of numberfindIndex 返回未定义而不是数字
【发布时间】:2021-06-04 09:29:56
【问题描述】:

我有以下代码:

const index = myArray.findIndex(
      (f) =>
        f.name === term1 ||
        f.name === term2
    );

当我尝试在 Chrome 开发工具中调试时,如果我在此 sn-p 之后设置断点,index 始终显示为undefined。我的理解是findIndex 应该始终返回一个number,即满足条件的数组的第一个索引,如果从未满足,则返回-1。

如果我在此代码后立即中断并使用控制台手动输入代码但未将其分配给任何内容,则控制台会显示正确的索引号。问题不在于在数组中找到的项目。它在那里,但在调试器中它只会显示未定义。

为什么此代码返回 undefined 而不是 number

*我已经在 Firefox 和 Edge 中尝试过。那里也是同样的问题。

【问题讨论】:

  • 当您说您在该代码“之后”设置断点时,您的意思是指在该代码之后立即,就像在const 声明之后的下一条语句中一样?
  • 是的。我已经尝试在const 后面的代码中的几个点进行中断。我检查的任何其他变量都是正确的,只是不是index
  • 听起来您没有正确使用调试器,或者您正在查看始终为 undefinedconst 语句的评估值。 Example
  • 那时,我唯一能想到的就是 Array.prototype.findIndex 的错误 polyfill。
  • index 稍后会在您的程序代码中使用吗?如果不是,该变量可能会被优化掉。另外,您使用的是转译器吗?它可能已经重命名了变量并且调试器在源映射中找不到目标名称。

标签: javascript arrays typescript ecmascript-6


【解决方案1】:

我只是稍微扩展一下你的代码:-

const term1 = 'aaa';
const term2 = 'bbb';
const myArray = [ { name: 'ccc' }, { name: 'ddd' }, ];
const index = myArray.findIndex(
  (f) =>
    f.name === term1 ||
    f.name === term2
);
console.log(index);

我总是得到 -1 的预期输出,或者如预期的那样。我尝试摆弄各种组合和类型 - 不行。

在我的环境中,您的代码运行良好 - 所以我猜问题出在其他地方。

抱歉 - 这不构成答案 - 只是一些输入 :-)

【讨论】:

  • 我至少感谢您的意见。奇怪的是,似乎无法调试代码。一定是围绕它的一些问题,而不是我想象的代码本身。
猜你喜欢
  • 2018-05-08
  • 1970-01-01
  • 2019-05-17
  • 2021-09-11
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
相关资源
最近更新 更多