我正在尝试制作一个接受数组的函数,并打印缺少一个数字的数组版本。例如,如果数组是[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]);





函数名称很奇怪,因为最终该函数还会执行其他操作。

最佳答案

这行实际上是在说“将“序列”数组也称为“ 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]);

关于javascript - 我没有拼接的变量正在拼接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52358063/

10-13 02:22