逐字逐句地按 for 循环过滤字符串



我正在尝试创建一个 for 循环,该循环将在删除不需要的单词后最终返回过滤后的字符串。

例如,当给定红色黄色绿色黑色蓝色白色时,我希望输出为红色绿色蓝色

const givenString = 'red yellow green black blue white';
const unwantedWords = ['yellow', 'black', 'white'];
for(i = 0; i < unwantedWords.length; i++){
let finalString = givenString.replace(unwantedWords[i], '');
console.log(finalString)
}

问题是这会返回多个日志,每个日志都删除了三个单词中的一个。不是删除所有单词的最终日志

Edit

只是想分享一个漂亮的ES6衬里。

const result = unwantedWords.reduce((prev, current)=>prev.replace(current,''), givenString);

您每次都在循环中定义变量,因此本质上您只是过滤掉并丢弃它。您应该在循环外定义它,并在循环内更改它。

const givenString = 'red yellow green black blue white';
const unwantedWords = ['yellow', 'black', 'white'];
let finalString = givenString;
for (i = 0; i < unwantedWords.length; i++) {
finalString = finalString.replace(unwantedWords[i], '');
}
console.log(finalString)

您的givenString没有改变。 每次从每个循环givenStringfinalString进行新的更改时,都会更改finalString

const givenString = 'red yellow green black blue white';
const unwantedWords = ['yellow', 'black', 'white'];
let finalString = givenString;
for (i = 0; i < unwantedWords.length; i++) {
finalString = finalString.replace(unwantedWords[i], '');
}
console.log(finalString)

最新更新