该代码将在数组中的值与索引相同时返回数组中的最低索引。如果没有匹配项,我应该返回-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