【问题标题】:Does JavaScript's reverse( ) always change the original variable?JavaScript 的 reverse() 是否总是改变原始变量?
【发布时间】:2015-09-03 16:10:30
【问题描述】:

让我解释一下:

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,即原始变量。这是为什么呢?

【问题讨论】:

  • 注意,您也可以使用for 循环以倒序遍历str 数组,然后不必反转生成的arr

标签: javascript variables variable-assignment reverse


【解决方案1】:

是的,reverse 将数组反转到位。您可以使用slice 在反转之前创建一个副本。

var copy = arr.slice();
copy.reverse();

【讨论】:

    【解决方案2】:

    为什么会这样?

    因为specification 是这么说的:

    数组的元素被重新排列以颠倒它们的顺序。对象作为调用的结果返回。

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 2013-03-06
      • 2016-01-13
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多