使用Javascript从数组返回多个索引值

时间:2015-01-21 21:40:09

标签: javascript arrays indexof

我有一个包含单词的单个字母的数组,我想搜索数组以返回某些字母的索引值。但是,如果单词不止一次包含更多字母(例如' tree'),程序只返回一个索引值。

这是代码示例:

var chosenWord = "tree";     
var individualLetters = chosenWord.split('');
var isLetterThere = individualLetters.indexOf(e);
console.log(isLetterThere);

此代码将返回数字' 2',因为这是字母' e的第一个实例。我如何让它以整数格式返回2和3,这样我就可以使用.splice函数替换另一个数组中的项目。

5 个答案:

答案 0 :(得分:1)

indexOf接受第二个参数,作为它应该开始搜索的位置。

所以我的方法是:

function findLetterPositions(text, letter) {
    var positions = new Array(),
        pos = -1;
    while ((pos = text.indexOf(letter, pos + 1)) != -1) {
        positions.push(pos);
    }
    return positions;
}

console.log(findLetterPositions("Some eerie eels in every ensemble.", "e"));

http://jsfiddle.net/h2s7hk1r/

答案 1 :(得分:0)

你可以写一个这样的函数:

function indexesOf(myWord, myLetter)
{
    var indexes = new Array();
    for(var i = 0; i < myWord.length; i++)
    {
        if(myWord.charAt(i) == myLetter)
        {
            indexes.push(i);
        }
    }
    return indexes;
}
console.log(indexesOf("tree", "e"));

答案 2 :(得分:0)

在此处循环播放:

var chosenWord = "tree";
var specifiedLetter = "e";
var individualLetters = chosenWord.split('');
var matches = [];
for(i = 0;i<individualLetters.length;i++){
  if(individualLetters[i] == specifiedLetter)
    matches[matches.length] = i; 
}

console.log(matches);

答案 3 :(得分:0)

使用字符串方法的替代方法。

&#13;
&#13;
var str = "thisisasimpleinput";
var cpy = str;
var indexes = [];
var n = -1;
for (var i = cpy.indexOf('i'); i > -1; i = cpy.indexOf('i')) {
  n += i;
  n++;
  indexes.push(n);
  cpy = cpy.slice(++i);
}
alert(indexes.toString());
&#13;
&#13;
&#13;

答案 4 :(得分:0)

var getLetterIndexes = function(word, letter) {
  var indexes = [];
  word.split("").forEach(function(el, i) {
    el === letter && indexes.push(i);
  });
  return indexes;
};

getLetterIndexes("tree", "e"); // [2, 3]