javascript - 测试数组索引是否等于数组值

标签 javascript arrays undefined reduce

代码是当数组中的值与索引相同时,返回数组中最低的索引。如果没有匹配项,我应该返回 -1。例如:

indexEqualsValue([-8,0,2,5])
output: 2 //array[2] == 2

indexEqualsValue([-1,0,3,6])
output: -1  //no matches

代码在没有匹配项或数组长度为零时有效,但在其他时间无效。我认为问题是我的 if 语句中的第一个条件。我不一定想要答案,更多关于我应该检查/重写的提示。

谢谢!

function indexEqualsValue(a) {
    return a.reduce((acc, currV, currI) => {
      if (currI === currV) {
        return currV;
      }
      return -1;
  }, 0);
}

最佳答案

你可以用 Array#findIndex 找到索引.

const indexEqualsValue = array => array.findIndex((v, i) => v === i);

console.log(indexEqualsValue([-8, 0, 2, 5])); //  2
console.log(indexEqualsValue([-1, 0, 3, 6])); // -1

关于javascript - 测试数组索引是否等于数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51895039/

相关文章:

ocaml - (懒)Haskell 在 OCaml 中未定义/底部

javascript - 创建一个函数来进行乘法运算

javascript - 从 firebase 检索信息不起作用, key 不是函数

haskell - Haskell 的类型系统是否同构于一个不一致的逻辑系统?如果是这样,后果是什么?

java - Java中的随机数数组 - 想要升序排序

arrays - AS3从字母表数组中获取随机唯一字符

javascript - 动态字段 JS 值显示 "undefined"

javascript - 使用来自 JavaScript 函数的结果打开新标签

javascript - 无法使用 js/jquery 获取多个元素上的 Codemirror textarea 值

java - "Cannot create generic array of .."- 如何创建 Map<String, Object> 的数组?