反向和连接功能输出原始数组

时间:2017-08-30 03:54:15

标签: javascript arrays function reverse

我有一个数组,我们称之为 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

我希望这有助于澄清。

1 个答案:

答案 0 :(得分:4)

reverse方法改变原始数组并返回该数组。为防止这种情况发生,请使用slice

复制原始数组,然后再将其反转
var chunkReverse = chunk.slice().reverse();

希望有所帮助。