我已经通过 FCC 学习 Javascript 6 周了,并决定花一周的时间学习和尝试各种方法,以真正接近和熟悉在循环和语句中使用它们。只是玩弄弦乐,我试图用“我喜欢丝绸”替换弦乐“我喜欢牛奶”。我的代码实现了这一点,我理解它,但我决定添加一个 ||
运算符,结果让我感到困惑。如果我说 if(x[i]=== 'm' || x[i] === 'I'
,它不会替换 'I'
, 但替换 'm'
如果我保留它在原始代码中的方式,它会生成字符串 'I lise milk'
,即使 'k '
从未被提及。这是怎么回事?
let x = 'Hello I like milk';
let y = '';
for(let i = 0; i < x.length; i++) {
if(x[i] === 'm' || 'I') {
y = x.replace(x[i], 's' )
}
}
console.log(y)
最佳答案
好吧,有几个问题会让你的代码变得有趣
x[i] === 'm' || 'I'
始终为真,因为'I'
为真 - 如果不清楚,您可以使用if ('I') { console.log('圣诞快乐') }
你的循环产生一个新的字符串,每个循环都有一个替换,即它产生与没有循环和
相同的结果y = x.replace(x[x.length - 1], 's')
替换将替换第一个匹配字符 - 字符串中的最后一个字符是
k
,因此替换会将第一个匹配的k
更改为s
所以,你的代码的结果是
'Hello I lise milk'
希望这有助于解决问题!
顺便说一句,用 s
替换所有 m
和 I
的最简单方法:
console.log(x.replace(/[mI]/g, 's'))
关于javascript - Replace(),替换一个未指定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770920/