javascript - 测试数组索引是否等于数组值
问题描述
代码是当数组中的值与索引相同时,返回数组中的最低索引。如果没有匹配项,我应该返回-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
推荐阅读
- python-3.x - 上传文件到 tmp 目录 lambda
- javascript - 使用回调参数在 Javascript 中创建函数
- python - 如何按键排序这个字典?
- php - 如何从 openssl_decrypt 文本和密钥中提取?- PHP
- apache-flink - 为什么 ListCheckpointed 期望 java.util.List 而不是 scala native List
- mvvm - 将特征文件夹与 Prism 一起使用
- c++ - 试图摆脱空数据字段(一种空基优化?)
- php - 有没有办法加快我的 curl 请求
- android - 何时在 Gradle 插件中应用自定义 Android 扩展?
- laravel - Laravel插入数据库,里面有循环