javascript - 在不使用内置 indexOf 函数的情况下查找数组元素的索引

标签 javascript arrays

我是 JS 的新手,有一个项目可以在不使用 indexOf 内置函数的情况下查找数组元素的索引。我试图寻找解决方案,但我得到的只是上述内置函数的示例,我已经知道如何使用它们。任何人都可以提供一个简单的例子让我继续吗? 我的想法是这样的,但请注意我是新手,这是我真正想了解的学术练习:

var index;
var target = 10;
for(var val in collection){
   if(collection[val] === target){
      index = val;
    }
    return index;
}

最佳答案

这个尝试几乎是正确的。您似乎已经了解需要什么:遍历数组的元素直到找到匹配项,然后返回该匹配项的索引。

不过,您犯了一些错误。让我们逐步了解一些改进。

  • 您的return 语句在循环内,但在if 之外。如果找到匹配项,您只想返回。目前,您总是在循环的第一次迭代后返回!

    function myIndexOf(collection, target) {
        var index;
        for(var val in collection){
           if(collection[val] === target){
              index = val;
              return index;
            }
        }
    }
    
  • 不需要单独的 index 变量。您可以在确定答案正确后立即返回 val

    function myIndexOf(collection, target) {
        for(var val in collection){
           if(collection[val] === target){
              return val;
            }
        }
    }
    
  • 您应该使用数字for 循环来循环,而不是for-in 循环。 for-in 循环不保证有一个固定的顺序,所以你可能不会总是得到匹配的最低索引。 (此外,for-in 可以匹配非数字属性名称,这可能不是您想要的。)

    function myIndexOf(collection, target) {
        for(var val=0; val<collection.length; val++){
           if(collection[val] === target){
              return val;
            }
        }
    }
    
  • 要像 indexOf 一样,您可以在找不到匹配项时返回 -1

    function myIndexOf(collection, target) {
        for(var val=0; val<collection.length; val++){
           if(collection[val] === target){
              return val;
            }
        }
        return -1;
    }
    

关于javascript - 在不使用内置 indexOf 函数的情况下查找数组元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30375616/

相关文章:

c - C中二维数组的最大尺寸

javascript - 将json转换为其他json结构

Javascript - 如何在 chart.js 的选项规范区域内插入 if 和 else 语句

javascript - JS Frontend <-> C++后端通信(不同服务器)

javascript - 如何使用 GitHub api 查找存储库的 'm' 最旧的分支

javascript - 如何在多个 Google 表格中使用多个 OnEdit 函数

javascript - 在内容可编辑的 div 中禁用自动更正/自动完成

javascript - Highcharts - 显示 noData 叠加层和 x 轴标签

php - 如何使用 $.ajax 通过隐藏输入字段 POST 多维 PHP 数组?

Android:如何将目录中的所有文件列出到数组中?