带有数组功能的顺口溜检查器

问题描述 投票:0回答:1

我的目的是测试一个词缀(词的正反面是一样的),以及只包含词缀的日志和数组,到目前为止,这是我能想到的最多的方法。


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

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

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

javascript data-structures palindrome
1个回答
0
投票

你没有返回你的过滤条件。你做了比较,但没有返回,所以过滤器的比较器返回的是一个未定义的值,因此它没有过滤任何东西。否则,你的其他逻辑都是正确的!

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"]));

箭头函数和函数的区别 很早以前就已经回答过了,所以在这里供大家参考。

如果你使用编辑器或代码linter,可能也会有帮助,可以帮助你及早发现问题。漏掉的返回语句和漏掉的逐一错误一样容易犯。

Off by One错误和漏掉的返回语句undefined一样容易犯错。

编码快乐!

© www.soinside.com 2019 - 2024. All rights reserved.