Javascript 中的回文
Palindromes in Javascript
我的目标是将每个单词与相反的单词进行比较。代码运行良好,直到 forEach()
循环。尝试 word === word.reverse()
是行不通的,但希望您明白了。我想将单词与反转版本进行比较以找到回文。我意识到有一些方法可以只使用过滤器来做到这一点,但目标是用 forEach()
来做到这一点。对简单修复此问题的任何建议表示赞赏。谢谢!
//************************* Finding Palindromes******************/
let arr = "I love Mom she, she is radar mom?"
function pallindromes(arr){
if(arr.length == 0) return console.log(null)the Pa
arr = arr.toLowerCase()
arr = arr.replace(/[?,]/g,"")
arr = arr.split(" ")
arr = [...new Set(arr)]
let newList = []
arr.forEach(word=>{
if(word === word.reverse()){
newList.push(word)
}
})
return console.log(newList)
}
pallindromes(arr)
已更改: word.split("").reverse().join("")
let arr = "I love Mom she, she is radar mom?"
function pallindromes(arr) {
if (arr.length == 0) return console.log(null);
arr = arr.toLowerCase()
arr = arr.replace(/[?,]/g, "")
arr = arr.split(" ")
arr = [...new Set(arr)]
let newList = []
arr.forEach(word => {
if (word === word.split("").reverse().join("")) {
newList.push(word)
}
})
return console.log(newList)
}
pallindromes(arr)
字符串没有反向方法,但数组有。
因此将 word.reverse()
替换为 word.split("").reverse().join("")
。
这将创建一个数组,将单词拆分为每个字母,将其反转,然后再次加入。
你想要的实际上是一种在Javascript中反转字符串的方法,因为.reverse()
只能使用for arrays。很多帖子和问题都涵盖了这一点。
如果我采用这个 answer,我可以用 s.split("").reverse().join("");
反转一个字符串,所以通过将这个应用到你的代码我们得到
let arr = "I love Mom she, she is radar mom?"
function pallindromes(arr){
if(arr.length == 0) return console.log(null)
arr = arr.toLowerCase()
arr = arr.replace(/[?,]/g,"")
arr = arr.split(" ")
arr = [...new Set(arr)]
let newList = []
arr.forEach(word=>{
if(word === word.split('').reverse().join('')){
newList.push(word)
}
})
return console.log(newList)
}
pallindromes(arr)
返回 [ 'i', 'mom', 'radar' ]
我仍然建议创建一个 reverseString()
函数,这样不习惯 javascript 的人仍然可以轻松阅读您的代码,而不必猜测 .split().reverse().join()
的作用。
干杯。
我的目标是将每个单词与相反的单词进行比较。代码运行良好,直到 forEach()
循环。尝试 word === word.reverse()
是行不通的,但希望您明白了。我想将单词与反转版本进行比较以找到回文。我意识到有一些方法可以只使用过滤器来做到这一点,但目标是用 forEach()
来做到这一点。对简单修复此问题的任何建议表示赞赏。谢谢!
//************************* Finding Palindromes******************/
let arr = "I love Mom she, she is radar mom?"
function pallindromes(arr){
if(arr.length == 0) return console.log(null)the Pa
arr = arr.toLowerCase()
arr = arr.replace(/[?,]/g,"")
arr = arr.split(" ")
arr = [...new Set(arr)]
let newList = []
arr.forEach(word=>{
if(word === word.reverse()){
newList.push(word)
}
})
return console.log(newList)
}
pallindromes(arr)
已更改: word.split("").reverse().join("")
let arr = "I love Mom she, she is radar mom?"
function pallindromes(arr) {
if (arr.length == 0) return console.log(null);
arr = arr.toLowerCase()
arr = arr.replace(/[?,]/g, "")
arr = arr.split(" ")
arr = [...new Set(arr)]
let newList = []
arr.forEach(word => {
if (word === word.split("").reverse().join("")) {
newList.push(word)
}
})
return console.log(newList)
}
pallindromes(arr)
字符串没有反向方法,但数组有。
因此将 word.reverse()
替换为 word.split("").reverse().join("")
。
这将创建一个数组,将单词拆分为每个字母,将其反转,然后再次加入。
你想要的实际上是一种在Javascript中反转字符串的方法,因为.reverse()
只能使用for arrays。很多帖子和问题都涵盖了这一点。
如果我采用这个 answer,我可以用 s.split("").reverse().join("");
反转一个字符串,所以通过将这个应用到你的代码我们得到
let arr = "I love Mom she, she is radar mom?"
function pallindromes(arr){
if(arr.length == 0) return console.log(null)
arr = arr.toLowerCase()
arr = arr.replace(/[?,]/g,"")
arr = arr.split(" ")
arr = [...new Set(arr)]
let newList = []
arr.forEach(word=>{
if(word === word.split('').reverse().join('')){
newList.push(word)
}
})
return console.log(newList)
}
pallindromes(arr)
返回 [ 'i', 'mom', 'radar' ]
我仍然建议创建一个 reverseString()
函数,这样不习惯 javascript 的人仍然可以轻松阅读您的代码,而不必猜测 .split().reverse().join()
的作用。
干杯。