返回多个indexOf

时间:2014-07-14 12:03:34

标签: javascript arrays indexing position

我有一个类似于下面的数组。

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

我的目标是获得具有' Hello'

值的所有职位

欲望结果:

0,2,4

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

2 个答案:

答案 0 :(得分:2)

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原型:

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");

答案 1 :(得分:1)

我原本认为你的问题有部分匹配的元素,但它没有。在任何情况下,如果你想包括部分匹配,这对你有用:

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));
相关问题