返回多个indexOf

Returning multiple indexOf

本文关键字:indexOf 返回      更新时间:2023-09-26

我在下面有一个类似的数组

var my_array = ['Hello', 'How Are you?', 'Hello', 'Good morning!', 'Hello'];

我的目标是获取所有值为'Hello'的位置

欲望的结果:

0, 2, 4

每当我尝试my_array . indexof ("Hello")。它只返回第一个找到的0。

function indexesOf(str,arr){
    var res = [];
    for(i=0;i<arr.length;i++){
        if(arr[i] == str)
            res.push(i);
    }
    return res;
}
var my_array = ['Hello', 'How Are you?', 'Hello', 'Good morning!', 'Hello'];
var indexes = indexesOf("Hello", my_array);

或者你可以使用Array prototype:

Array.prototype.indexesOf = function (str){
    var res = [];
    for(i=0;i<this.length;i++){
        if(this[i] == str)
            res.push(i);
    }
    return res;
}
var my_array = ['Hello', 'How Are you?', 'Hello', 'Good morning!', 'Hello'];
var indexes = my_array.indexesOf("Hello");

我最初认为你的问题也有部分匹配的元素,但它没有。在任何情况下,如果您想包含部分匹配,这将为您工作:

var my_array = ['Hello', 'How Are you?', 'Hello World', 'Good morning!', 'Hello'];
function indexesOf(str,array) {
    var arr = [], re = new RegExp(str, 'g');
    array.forEach(function(val,idx) {
        if (val.match(re)) { arr.push(idx) }
    });
    return arr;
}
console.log(indexesOf('Hello',my_array));