如何在 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;
我目前正在 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;