当数组中的值与索引相同时,代码将返回数组中最低的索引。如果没有匹配项,我应该返回-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);
}发布于 2018-08-17 20:14:25
some在匹配时退出,因此您可以使用它快速找到您需要的内容:
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似乎不支持。
https://stackoverflow.com/questions/51895039
复制相似问题