我有一个类似于下面的数组。
var my_array = ['Hello', 'How Are you?', 'Hello', 'Good morning!', 'Hello'];
我的目标是获得具有' Hello'
值的所有职位欲望结果:
0,2,4
每当我尝试my_array .indexOf(" Hello")。它只返回0,这是第一个找到的。
答案 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));