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