首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试数组索引是否等于数组值

测试数组索引是否等于数组值
EN

Stack Overflow用户
提问于 2018-08-17 20:02:34
回答 3查看 550关注 0票数 8

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

代码语言:javascript
复制
indexEqualsValue([-8,0,2,5])
output: 2 //array[2] == 2

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

当没有匹配项或数组长度为零时,该代码可以工作,但在其他情况下则不起作用。我认为问题是我的if语句中的第一个条件。我不一定想要一个答案,关于我应该检查/重写的更多提示。

谢谢!

代码语言:javascript
复制
function indexEqualsValue(a) {
    return a.reduce((acc, currV, currI) => {
      if (currI === currV) {
        return currV;
      }
      return -1;
  }, 0);
}
EN

回答 3

Stack Overflow用户

发布于 2018-08-17 20:04:58

您可以使用Array#findIndex来查找索引。

代码语言:javascript
复制
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

票数 9
EN

Stack Overflow用户

发布于 2018-08-17 20:14:25

some在匹配时退出,因此您可以使用它快速找到您需要的内容:

代码语言:javascript
复制
const indexEqualsValue = array => {
  let match;
  
  const didMatch = array.some((v, i) => {
    match = i;
    return v === i;
  })
  
  return didMatch ? match : -1;
}

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

妮娜-肖尔茨的答案是更好的,使用some而不是findIndex的唯一优势是ie支持some,而findIndex似乎不支持。

票数 1
EN

Stack Overflow用户

发布于 2018-08-17 20:50:29

代码语言:javascript
复制
for(i = 0,c=0;i < arr.length; i++ ) { 
    if(arr[i] == i) {
        c = 1;
        break; 
    }
}   
if( c == 0 ) {  
    print(c);  
} else {  
    print (i);  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51895039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档