Javascript 查找数组中重复字符的唯一索引

Javascript 查找数组中重复字符的唯一索引,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我正在遍历一个字符串数组及其字符,以将它们的索引与另一个字符数组进行比较。该代码一直工作到字符串具有重复字符为止,然后只返回第一个(重复)字符的索引。例如:[“IAMDEFANDJKL”]对于“A”和“D”,循环只返回每次出现的第一个索引 例如:[“abode”]返回[1,2,4,5],然后在.length之后应用返回[4]-[IAMDEFANDJKL]应该返回[4,5,6,10,11,12],然后返回[6](当前返回[7],因为“D”出现两次) 如何编辑代码以返回所有字符的唯一索引 funct

我正在遍历一个字符串数组及其字符,以将它们的索引与另一个字符数组进行比较。该代码一直工作到字符串具有重复字符为止,然后只返回第一个(重复)字符的索引。例如:[“IAMDEFANDJKL”]对于“A”和“D”,循环只返回每次出现的第一个索引

例如:[“abode”]返回[1,2,4,5],然后在.length之后应用返回[4]-[IAMDEFANDJKL]应该返回[4,5,6,10,11,12],然后返回[6](当前返回[7],因为“D”出现两次)

如何编辑代码以返回所有字符的唯一索引

function solve() {  
  var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 
                  'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 
                  'u', 'v', 'w', 'x', 'y', 'z'];
  var testArray = ["IAMDEFANDJKL","thedefgh","xyzDEFghijabc"];
  var countArray = [];

  for(var i = 0; i < testArray.length; i++) {
    var string = testArray[i];
    var newArray = [];

    for(var char = 0; char < string.length; char++) {
      var character = string.charAt(char);
      var characterIndex = string.indexOf(character);

      for(var alpha = 0; alpha < alphabet.length; alpha++) {
        var alphaString = alphabet[alpha];
        var alphaIndex = alphabet.indexOf(alphaString);
        var characterUpper = character.toUpperCase();
        var alphaStringUpper = alphaString.toUpperCase();

        if(characterIndex === alphaIndex && characterUpper === 
           alphaStringUpper) {
          newArray.push(alphaIndex);
        }
       var arrayLength = newArray.length;
      }
    }
   countArray.push(arrayLength);
  }

 return countArray;

};

solve();
函数solve(){
变量字母表=['a','b','c','d','e','f','g','h','i','j',
‘k’、‘l’、‘m’、‘n’、‘o’、‘p’、‘q’、‘r’、‘s’、‘t’,
“u”、“v”、“w”、“x”、“y”、“z”];
var testArray=[“iamdefand jkl”、“thedeff”、“xyzDEFghijabc”];
var countArray=[];
对于(变量i=0;i
很难理解您想要的输出是什么,但我会尝试

const alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
    'u', 'v', 'w', 'x', 'y', 'z'];
const testArray = ["IAMDEFANDJKL","thedefgh","xyzDEFghijabc"];

const result = testArray.map(str => {
    return Array.from(str.toLowerCase()).map((char) => {
        return alphabet.findIndex(alphabetChar => alphabetChar === char)
    })
});
输出将是:

[ [ 8, 0, 12, 3, 4, 5, 0, 13, 3, 9, 10, 11 ],
  [ 19, 7, 4, 3, 4, 5, 6, 7 ],
  [ 23, 24, 25, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2 ] ]


这意味着它用其他数组中该字符的索引替换字符串的每个字符

很难理解您想要的输出是什么,但我会尝试

const alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
    'u', 'v', 'w', 'x', 'y', 'z'];
const testArray = ["IAMDEFANDJKL","thedefgh","xyzDEFghijabc"];

const result = testArray.map(str => {
    return Array.from(str.toLowerCase()).map((char) => {
        return alphabet.findIndex(alphabetChar => alphabetChar === char)
    })
});
输出将是:

[ [ 8, 0, 12, 3, 4, 5, 0, 13, 3, 9, 10, 11 ],
  [ 19, 7, 4, 3, 4, 5, 6, 7 ],
  [ 23, 24, 25, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2 ] ]


这意味着它会将字符串中的每个字符替换为其他数组中该字符的索引

您可以使用一个对象并存储上一次找到的索引加上一个索引,以便下次搜索

函数求解(){
var字母表=[…'abcdefghijklmnopqrstuvwxyz'];
var testArray=[“iamdefand jkl”、“thedeff”、“xyzDEFghijabc”];
var countArray=[];
对于(变量i=0;ilog(solve())您可以使用一个对象并存储上一次找到的索引和一个索引,以便下次搜索

函数求解(){
var字母表=[…'abcdefghijklmnopqrstuvwxyz'];
var testArray=[“iamdefand jkl”、“thedeff”、“xyzDEFghijabc”];
var countArray=[];
对于(变量i=0;ilog(solve())请加上(想要的)结果。编辑和添加与哪一个字符串比较?请加上(想要的)结果。编辑和添加哪个字符串与哪个比较?这是问题陈述:考虑“住所”这个词。我们可以看到字母a在位置1,b在位置2。在字母表中,a和b也位于位置1和2。还要注意的是,居留地中的d和e占据了他们在字母表中的位置,即位置4和5。给定一个单词数组,返回每个单词在字母表中占据位置的字母数数组。例如,解决([住所],“ABC”,“XYZD”)= [ 4, 3, 1 ]请检查第二种方法。这是问题陈述:考虑“住所”这个词。我们可以看到字母a在位置1,b在位置2。在字母表中,a和b也位于位置1和2。还要注意的是,居留地中的d和e占据了他们在字母表中的位置,即位置4和5。给定一个单词数组,返回一个