javascript - 为什么变量会发生变化?
问题描述
我是 JavaScript 新手,所以我可能搞砸了一些简单的事情。
我目前正在代码战上练习 JS,并提示:
本练习的目标是将字符串转换为新字符串,其中如果该字符在原始字符串中仅出现一次,则新字符串中的每个字符为“(”,如果该字符在原始字符串中多次出现,则为“)”细绳。在确定字符是否重复时忽略大小写。
一些例子是:
"din" => "((("
"后退" => "()()()"
"成功" => ")())())"
"((@" => "))(("
这是我在练习中的尝试:
function duplicateEncode(word){
word = word.toLowerCase().split('');
var tempWord = word
var newWord = [];
var ii = 0;
while (tempWord.length>0){
ii ++;
tempWord.splice(0,1);
if (tempWord.includes(word[ii])){
newWord.push("(");
} else {
newWord.push(")");
}
}
return(newWord.join(''));
}
我遇到的问题发生在
tempWord.splice(0,1);
当调用该行时,它也会影响变量“word”。有人可以向我解释这里发生了什么吗?
解决方案
var tempWord = word
创建对单词数组的引用。
如果您想创建单词数组的副本,请尝试以下操作:
// ES6 way
const tempWord = [...word];
// older method
const tempWord = Array.from(word);
推荐阅读
- android - 解析推送通知发送数据
- video.js - videojs() 和 bc() 有什么区别?
- python - 在 Beagle Bone Black 上使用 PWM 不起作用
- amazon-dynamodb - 在 DynamoDB 中设计查找表
- angular - 将静态文本文件导入角度应用程序
- python - 有人可以解释我的 Kivy 出了什么问题?
- python - 获取 Jupyter Notebook 中定义的对象的来源
- javascript - 使用 Javascript 复制到剪贴板功能
- ios - 以编程方式将 UIbutton 添加到表格视图内的单元格。滚动后与其他单元格聚集在一起的数据
- c++ - boost::format() 似乎不是线程安全的,因为 std::ctype
::narrow() 不是线程安全的