【问题标题】:Palindrom checker with array function使用数组函数进行回文检查
【发布时间】:2020-06-02 22:11:50
【问题描述】:

我的目标是测试回文(单词向前和向后相同)以及仅包含回文的日志和数组,到目前为止,这是我能想到的最多的。


const getAllPalindromes = (words) => {
 return words.filter((word) => {
  word.split("").reverse().join("") === word;
  });
};

console.log(getAllPalindromes(["hello", "noon"]));

据我了解,这应该返回一个数组,其中包含布尔值中为真的项目,任何指针都会对新手有所帮助,非常感谢!

【问题讨论】:

  • 欢迎来到 SO!您需要在过滤器中使用return,否则数组中的所有内容都被视为错误,因为undefined 是JS 中任何函数的默认返回值。或者使用指向单个表达式的无括号箭头函数的隐式返回值。
  • 王牌!得到它的工作谢谢

标签: javascript data-structures palindrome


【解决方案1】:

您没有按条件返回过滤器。您进行比较,但随后不返回它,因此过滤器具有未定义作为比较器的返回,因此它不会过滤任何内容。否则,其余的逻辑都是正确的!

const getAllPalindromes = (words) => words.filter((word) => word.split("").reverse().join("") === word);

console.log(getAllPalindromes(["hello", "noon"]));

由于您使用的是箭头函数,我们将使用它们中的隐式返回来使事情变得更小,特别是因为每个函数实际上只是一个语句。这是相同的代码,格式较长,可直接比较

const getAllPalindromes = function (words) {
 return words.filter(function (word) {
    return word.split("").reverse().join("") === word;
  });
};

console.log(getAllPalindromes(["hello", "noon"]));

The differences between Arrow Functions and Functions早就有人回答了,这里供参考。

如果您使用可以帮助您及早发现问题的编辑器或代码检查器,这也可能会有所帮助。遗漏的返回语句就像一个错误一样容易。

Off by One 错误就像未定义的未定义返回语句一样容易造成

编码愉快!

【讨论】:

  • 如果它对您有用,请不要忘记将其标记为正确答案,这样当其他人来时,他们知道哪个有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多