首页 > 解决方案 > 我不拼接的变量正在拼接

问题描述

我正在尝试制作一个接收数组的函数,并打印缺少一个数字的数组版本。例如,如果数组是[1,2,3],它将打印[2,3], [1,3], [1,2]。所以我正在制作一个变量tempSeq,将其设置为等于Sequence,用 打印Document.write(),然后重置tempSeq为原始值sequence。然而,由于某种原因,变量sequence正在被拼接。不知道为什么会这样,任何帮助将不胜感激!

function almostIncreasingSequence(sequence) {
  var tempseq = sequence;
  for (let i = 0; i < sequence.length; i++) {
    tempseq = sequence;
    tempseq.splice(i, 1);
    document.write("(" + tempseq + ")");
  }
  return tempseq;
}

almostIncreasingSequence([10, 1, 2, 3, 4, 5]);

函数名称很奇怪,因为最终该函数正在做其他事情。

标签: javascriptarrays

解决方案


这一行实际上是在说“将“序列”数组也称为“tempseq””

var tempseq = sequence;

它并不是说将“序列”数组克隆到“tempseq”中(如果您期望这种行为)。然后拼接实际对sequence数组进行操作

tempseq.splice(i, 1); // equal to sequence.splice(i, 1)

只需克隆数组:

// instead of
// var tempseq = sequence;
var tempseq = sequence.slice();

function almostIncreasingSequence(sequence) {
  var tempseq = sequence.slice();
  for (let i = 0; i < sequence.length; i++) {
    tempseq = sequence;
    tempseq.splice(i, 1);
    document.write("(" + tempseq + ")");
  }
  return tempseq;
}

almostIncreasingSequence([10, 1, 2, 3, 4, 5]);


推荐阅读