javascript - Replace(),替换一个未指定的值

标签 javascript string methods logical-operators

我已经通过 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)

最佳答案

好吧,有几个问题会让你的代码变得有趣

  1. x[i] === 'm' || 'I' 始终为真,因为 'I' 为真 - 如果不清楚,您可以使用 if ('I') { console.log('圣诞快乐') }

  2. 你的循环产生一个新的字符串,每个循环都有一个替换,即它产生与没有循环和

    相同的结果

    y = x.replace(x[x.length - 1], 's')

  3. 替换将替换第一个匹配字符 - 字符串中的最后一个字符是 k,因此替换会将第一个匹配的 k 更改为 s

所以,你的代码的结果是

'Hello I lise milk'

希望这有助于解决问题!

顺便说一句,用 s 替换所有 mI 的最简单方法:

console.log(x.replace(/[mI]/g, 's'))

关于javascript - Replace(),替换一个未指定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770920/

相关文章:

java - Android如何从TextView获取String到String

java - 从对象数组列表中调用方法

javascript - 父级的 setState 不会触发子级的 componentWillReceiveProps

Javascript:将对象转换为 Gephi/Sigma.Js 的数组或 JSON

将 Swift CChar 数组转换为字符串

c# - 如何检查字符串变量是否包含数组中字符串元素的子字符串 - C#

Java boolean 方法需要额外的 return 语句吗?

C++ 多线程类方法

javascript - 基于 JavaScript 的客户端的 3xx 响应的 RESTful 替代方案

javascript - Canvas context.drawimage 没有在正确的坐标上绘制