如何在 JavaScript 中同时循环遍历两个数组?

How can I loop through two arrays simultaneously in JavaScript?

我目前正在 JavaScript 从事个人项目,但遇到了重大障碍;我有 2 个数组,一个用于句子的字母,一个包含信息对象。

我需要遍历包含所有字母的第一个数组,然后遍历第二个数组以检查 letter 变量是否包含第二个数组中 object 中的任何数据.问题是我不知道如何同时 运行 这些数组,导致这样的输出,原因是数组 1 中的索引数量乘以数组 2 中的数量:

这是我的代码:

clearLookALikes: (string) => {
        const mainArray = string.split('')
        const replaceInfo = [

            {
                abuseLetter: 'È',
                replacementLetter: 'E'
            },
            {
                abuseLetter: 'É',
                replacementLetter: 'E'
            },
            {
                abuseLetter: 'Ë',
                replacementLetter: 'E'
            },
            {
                abuseLetter: 'Ê',
                replacementLetter: 'E'
            },
            {
                abuseLetter: 'Ē',
                replacementLetter: 'E'
            },
            {
                abuseLetter: 'Ē',
                replacementLetter: 'e'
            },
        ]
        const newArray = []


        for (const letter of mainArray) {
            for (const object of replaceInfo) {
                if (letter === object.abuseLetter) {
                    newArray.push(object.replacementLetter)
                } else {
                    newArray.push(letter)
                }
            }
        }
        console.log(newArray)
        const finishedProduct = newArray.join('')
        console.log(finishedProduct)



    }

理想情况下,它会按预期替换字母。谢谢您的帮助!我想知道这样做是否正确,如果我应该采取不同的做法,请随时给我反馈。

我建议将 replaceInfo 数组转换为地图或对象。下面的代码就是这样做的。然后,它遍历字符串并检查对象中是否有替换字母。如果是这样,请将其添加到输出字符串中。如果不是,请添加原始字母。

const replaceInfo=[{abuseLetter:"È",replacementLetter:"E"},{abuseLetter:"É",replacementLetter:"E"},{abuseLetter:"Ë",replacementLetter:"E"},{abuseLetter:"Ê",replacementLetter:"E"},{abuseLetter:"Ē",replacementLetter:"E"},{abuseLetter:"Ē",replacementLetter:"e"}];

const replacementMap = replaceInfo.reduce((acc, el) => {
  acc[el.abuseLetter] = el.replacementLetter;
  return acc;
}, {});

function clearLookalikes(str) {
  let final = "";
  for(let i = 0; i < str.length; i++) {
    if (replacementMap[str[i]] !== undefined) {
      final += replacementMap[str[i]];
    } else {
      final += str[i];
    }
  }
  return final;
}

console.log(clearLookalikes("thiÉefĒ"));

我假设您正在尝试用 replacementLetters 替换字符串中的某些 abuseLetters。为此,您甚至可能不想将 string 拆分为一个数组,而只是循环遍历 replaceInfo.

for (const obj of replaceInfo) {
    string = string.replaceAll(obj.abuseLetter, obj.replacementLetter);
}

return string;