代码之家  ›  专栏  ›  技术社区  ›  John Moran

输出原始数组的反向和连接函数

  •  2
  • John Moran  · 技术社区  · 7 年前

    我有一个数组,我们称之为 并将其赋值为[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 回复  |  直到 7 年前
        1
  •  4
  •   Aadit M Shah    7 年前

    reverse 方法变异原始数组并返回该数组。为了防止这种情况发生,请先复制原始阵列,然后使用 slice

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