让我解释一下:
function PalindromeTwo(str) {
str = str.split('');
var arr = [];
str.forEach(function(it){
if( (/[a-z]/i).test(it) ){
arr.push(it);
}
})
var reverseArr = arr.reverse();
return reverseArr.join('').toUpperCase() === arr.join('').toUpperCase();
}
PalindromeTwo("hello, there");
在这个例子中,当它应该返回false
时,它返回true
,因为var reverseArr = arr.reverse()
行不仅逆转了reverseArr
,而且逆转了arr
,即原始变量。为什么呢?
是的,reverse
将数组反转到位。您可以在反转之前使用slice
创建一个副本。
var copy = arr.slice();
copy.reverse();
为什么?
因为规范这么说:
数组中的元素被重新排列,以便颠倒它们的顺序。对象作为调用的结果返回。