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() 的作用。

干杯。