javascript - 尝试在数组中查找序列长度的问题

标签 javascript arrays function variables methods

我试图在指定数字的第一次出现和第二次出现之间找到数组中序列的长度。

例如:lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7) 将返回 5,因为 之间有 5 个索引第一次第二次出现数字 7。

我觉得我编写的代码应该可以工作,但是在控制台日志记录之后,我的 arr.push() 方法似乎只是将第一个索引推送到我的索引数组变量,并且它推了两次。为什么会这样?

这是我的上下文代码:

var lengthOfSequence = function (arr, n) {

  var indexes = [];

  for (var i = 0; i < arr.length; i++) {
    if (arr[i] === n) {
      indexes.push(arr.indexOf(arr[i]));
    }
  }

  return arr.indexOf(indexes[1]) - arr.indexOf(indexes[0]);

}

因此,例如,如果我使用我之前使用的数组 lengthOfSequence([0, -3, 7, 4, 0, 3, 7, 9], 7),我的 for loop 会找到第一次出现的 7(索引 2)并将其推送到我的索引数组变量,但它只会执行两次。所以我的索引数组就是 [2,2]。为什么不是 [2,6]

最佳答案

indexOf 并不像您认为的那样。它返回使用提供的值找到的第一个 项目的索引。对于数组中的两个值,它返回第一个索引。

由于您只需要索引并且您已经在循环中对其进行了迭代,因此您可以简单地使用 i 本身:

indexes.push(i);

关于javascript - 尝试在数组中查找序列长度的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39965165/

相关文章:

java - 在批处理文件中运行多个 jar 文件

javascript - 具有条件逻辑的 JQuery .css() 函数

java - 调用方法和其他有趣的东西

java - 将主类值存储在子类中作为数组

c++ - boost 函数映射到字符串

javascript - 如何在变量中返回 while 循环的结果

javascript - 无法在分离的 ArrayBuffer 上执行 ArrayBuffer.prototype.slice

javascript - 获取 YouTube 网站中的 Flash 视频状态 - Chrome 扩展

javascript - XMLHttpRequest 在 Firefox 中格式不正确

c - 在数组中输入 3 个字母,字母之间有空格