开发者社区> 问答> 正文

如何找到数组中所有元素出现的索引?

我试图在JavaScript数组中找到元素的所有实例的索引,例如“ Nano”。

var Cars = ["Nano", "Volvo", "BMW", "Nano", "VW", "Nano"]; 我尝试了jQuery.inArray或类似的.indexOf(),但是它只给出了元素的最后一个实例的索引,在这种情况下为5。

如何获得所有实例的信息? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 11:27:52 447 0
1 条回答
写回答
取消 提交回答
  • 该.indexOf()方法有一个可选的第二个参数,用于指定从其开始搜索的索引,因此您可以在循环中调用它以查找特定值的所有实例:

    function getAllIndexes(arr, val) { var indexes = [], i = -1; while ((i = arr.indexOf(val, i+1)) != -1){ indexes.push(i); } return indexes; }

    var indexes = getAllIndexes(Cars, "Nano"); 您并没有真正弄清楚如何使用索引,因此我的函数将它们作为数组返回(或者如果找不到该值,则返回一个空数组),但是您可以对各个索引值执行其他操作在循环内。

    更新:根据VisioN的评论,简单的for循环将更有效地完成相同的工作,并且更易于理解,因此更易于维护:

    function getAllIndexes(arr, val) { var indexes = [], i; for(i = 0; i < arr.length; i++) if (arr[i] === val) indexes.push(i); return indexes; }

    2020-02-08 11:28:09
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载