【问题标题】:Reverse and Join Functions Outputting Original Array输出原始数组的反向和连接函数
【发布时间】: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) =&gt; str === str.split('').reverse().join('')

标签: javascript arrays function reverse


【解决方案1】:

reverse 方法改变原始数组并返回该数组。为防止这种情况发生,请在使用slice 反转之前复制原始数组:

var chunkReverse = chunk.slice().reverse();

希望对您有所帮助。

【讨论】:

  • 确实如此。感谢您的协助和时间。
猜你喜欢
  • 1970-01-01
  • 2015-08-17
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多