javascript - 我不拼接的变量正在拼接
问题描述
我正在尝试制作一个接收数组的函数,并打印缺少一个数字的数组版本。例如,如果数组是[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]);
推荐阅读
- gradle - Gradle 通过插件添加对另一个源集的依赖
- sass - sass 迁移器问题 - 绝对路径和 node_modules
- c++ - 柯南:聚合多个包以独立使用
- arm-template - azure arm 模板在部署期间安装 2 个自定义应用程序......但只有 1 个应用程序正在安装
- reactjs - 通过数组和 API 调用进行异步映射时如何在 React 中设置状态
- java - Java 服务器证书链与 SNI 字段无关
- react-native - 如果我将 alignItems 赋予其容器,为什么 Map 不可见?
- iteration - 在 Julia 中使用迭代时努力改变给定矩阵的值
- html - 在两个不同的 div 中对齐文本
- html - 如何从 React Quill 导入 CSS?