【发布时间】:2017-08-30 03:54:15
【问题描述】:
我有一个数组,我们称它为 arr 并为其赋值 [a, a, b, c, d]。我试图首先反转数组,然后将它连接在一起以形成一个字符串。当我执行代码时:
arr.reverse().join('');
我希望得到(减去引号)的输出:
'dcbaa'
然而,我实际得到的是:
'aabcd'
我在这里做错了吗?我只是不了解我正在编写的代码的核心功能吗?反向函数是否会返回反向函数,然后在到达连接函数后立即将其丢弃?我的印象是反转字符串的好方法是使用:
str.split('').reverse().join('');
我只是拿它的最后一部分,因为我已经有了数组。任何帮助将不胜感激。
编辑上下文: 我正在编写一个函数来查找回文。我取一个传递给函数的字符串,然后在该字符串中找到最长的回文。
longestPalindrome=function(s){
var strlen = 0;
var stringArr = s.toLowerCase().split('');
var chunk = '';
if(s.length === 0){
return strlen;
}
//for loop to go through each letter
for(var i = 0; i < s.length; i++){
//for loop to grab increasing chunks of array (a, ab, abc, abcd, etc.)
for(var j = 0; j < s.length - i; j++){
//Grab piece of string and convert to array
chunk = stringArr.slice(i, (s.length - j));
//View new array
console.log(chunk);
//Reverse chunk for later comparison
var chunkReverse = chunk.reverse();
//Check to see what reverse of array would be
console.log(chunkReverse);
//Create string from chunk
chunk = chunk.join('');
//view string from former chunk array
console.log(chunk);
//Create string from reversed array
chunkReverse = chunkReverse.join('');
//View reversed string from chunk array
console.log(chunkReverse);
}
}
return strlen;
}
我从上面得到的输出给了我(来自原始帖子的虚拟数据):
[a,a,b,c,d]
[d,c,b,a,a]
aabcd
aabcd
我希望这有助于澄清。
【问题讨论】:
-
['a', 'a', 'b', 'c', 'd'].reverse().join('')肯定会输出字符串'dcbaa'。请edit 您的问题在上下文中显示您的arr.reverse().join('');行,因为您显示的内容不足以重现问题。请注意,您需要对.join()的返回值做一些事情,而且arr.reverse()实际上会更改数组,因此如果您连续执行两次arr.reverse().join('');,您将得到'dcbaa',然后是'aabcd'。 -
我进行了编辑以帮助澄清原始帖子。
-
感谢 nnnnnn 的帮助和时间。
-
如果你只是想检查一个字符串是否是回文,最好试试这个,
let isPalindrome = (str) => str === str.split('').reverse().join('')
标签: javascript arrays function reverse