Ben*_*ers 0 javascript function palindrome
我想创建一个函数“palindromes()”,它检查一个值是否是回文(向前和向后拼写相同)。为了做到这一点,我创建了 4 个函数,其中:
参见下面的函数:
function makeSmall(input) {
lowerCase = input.toLowerCase();
return lowerCase;
}
function keepOnlyLetters(input) {
var patt1 = /[a-z]/g;
var onlyLetters = input.match(patt1);
return onlyLetters;
}
function reverseArray(array) {
var reversedArray = array.slice().reverse();
return reversedArray;
}
function checkPalindromes(array) {
var reversedArray = array.slice().reverse();
for (let i = 0; i <= array.length; i++) {
if (array[i] != reversedArray[i]) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
如何确保函数“palindromes()”采用一个值并通过所有这些函数运行它,最终给出该值是否是回文的答案(真或假)?
最好的问候,贝尼
函数存在收益递减点。当调用函数与内联使用函数体一样短时,您可能已经达到了这一点。例如,makeSmall(input)仅使用内联实际上没有任何改进input.toLowerCase(),并且会更慢且更难以理解。input.toLowerCase()已经是一个函数;将其包装在另一个函数中只是浪费工作。
话虽如此,为了回答您的问题,由于所有函数都返回输入到下一个函数的值,因此您可以将函数放入数组中并调用reduce():
function palindromes(input) {
return [makeSmall, keepOnlyLetters, reverseArray, checkPalindromes].reduce((a, c) => c(a), input)
}
Run Code Online (Sandbox Code Playgroud)