当前位置: 首页 > 面试题库 >

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

国兴贤
2023-03-14
问题内容

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

var Cars = ["Nano", "Volvo", "BMW", "Nano", "VW", "Nano"];

我尝试了jQuery.inArray或类似的.indexOf(),但是它只给出了元素的最后一个实例的索引,在这种情况下为5。

如何获得所有实例的信息?


问题答案:

.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;
}


 类似资料:
  • 问题内容: 老实说,这个问题很简单。有没有一种方法可以快速查找数组中某个元素的所有出现而无需循环遍历它?似乎所有内置方法仅返回第一次出现的索引,而不是全部返回。 拥有返回索引数组的样式方法将是很不错的。有什么想法吗? 预先感谢您的任何投入! 编辑: 感谢大家的回复!看来我应该对此更加清楚。我目前的操作方式是扩展,其外观与下面发布的一个哑光非常相似。我知道,任何执行此操作的方法都必须在内部遍历数组,

  • 问题内容: 我正在寻找在Java中找到给定元素的索引,并知道其内容的方法。 我尝试了以下示例,该示例不起作用: 谁能解释这个问题是什么以及我需要做些什么来解决它? 问题答案: 在这种情况下,你可以从字符数组中创建一个新的String,然后对该字符串执行indeoxOf(“ e”): 但是在其他原始数据类型的情况下,你必须对其进行迭代。

  • 我收集了一些作者的文章。每个作者都有一个独特的签名或链接,出现在他们所有的文本中。 Author1的示例: Author1的预期输出为: Author2的示例: Author2的预期输出为: 请特别注意,没有可靠的识别字符(或位置)表示签名的开始或结束。它可以是一个url,一个Twitter地址,任何类型的纯文本,等等,任何长度,包含字符串开头、结尾或中间出现的任何字符序列。 我正在寻找一种方法,

  • 我在一次采访中被问到以下问题。虽然我用n元树回答了这个问题,但有人告诉我这还不够好。所以,我很好奇,什么是它的最佳解决方案。 输入:整数数组:[2,3,7]和总和:10 输出:加起来等于和的所有数组元素组合(例如2、2、3、3、7等) 谢了小泰

  • 问题内容: 在Python Selenium模块中,一旦有了对象,我可以使用以下命令获取其任何属性的值: 如果命名的属性不存在,则返回。 我的问题是,如何获取元素具有的所有属性的列表?似乎没有或方法。 我正在为Python使用Selenium模块的2.44.0版本。 问题答案: 这是 不可能的 使用硒webdriver的API,但你可以_执行JavaScript代码_来获取所有属性: 演示: 为了

  • 问题内容: 我正在尝试获取numpy数组中所有重复元素的索引,但是我目前发现的解决方案对于大型(> 20000个元素)输入数组(大约需要9秒钟的时间),实际上效率很低。这个想法很简单: 是一个时间戳()的numpy数组,我们要从中提取重复时间戳的索引 是一个numpy数组,其中包含在中重复的所有时间戳 是一个django QuerySet(可以轻松转换为列表),其中包含一些Record对象。我们要