我有一个阵列说
var list = ["first", "second"];
Run Code Online (Sandbox Code Playgroud)
现在我将列表分配给其他变量说
var temp = list;
Run Code Online (Sandbox Code Playgroud)
现在,当我使用拼接的名单像
list.splice(0,1);
Run Code Online (Sandbox Code Playgroud)
现在,当我检查它显示的列表的值时
list = ["second"]
Run Code Online (Sandbox Code Playgroud)
当我检查temp的值时,它说
temp = ["second"]
Run Code Online (Sandbox Code Playgroud)
我想知道为什么会这样?为什么temp的值会改变?
我有一个验证器库,它正在清理和验证字符串.验证器函数正在将消息推送到数组"errors",以查找它们找到的每个无效输入.
当所有输入的验证完成后,我会收集如下变量中的错误:
var errors = validator.getErrors();
// Function definition
Validator.prototype.getErrors = function () {
return this._errors;
}
Run Code Online (Sandbox Code Playgroud)
var"errors"现在是一个包含0到几个字符串元素的数组.在此之后,我正在调用一个函数来清空验证器中的错误.
validator.clearErrors();
// Function definition
Validator.prototype.clearErrors = function () {
this._errors = [];
}
Run Code Online (Sandbox Code Playgroud)
问题:我可以以某种方式重新编写getErrors()函数,这样它也是空的内部_errors变量吗?...然后我可以完全删除clearErrors函数.
我有下面的代码也在这个小提琴.
我列出了下面的输出和预期输出.我无法理解为什么我还没有对rNums进行排序但它仍然输出了sorterd结果?
如果我注释掉sort函数,则随机出现,但不是有序的.我在这做错了什么?
随机应该在nNums中显示,有序应该按数字顺序显示?
<ul id="random"></ul>
<ul id="ordered"></ul>
<script>
var rNums = [1,5,3,2,4];
console.log(rNums);
var sortRNums = rNums;
sortRNums.sort(function (a, b) {
return a - b
});
$.each(rNums, function (index, value) {
$("#random").append('<li>' + value + '</li>');
});
$.each(sortRNums, function (index, value) {
$("#ordered").append('<li>' + value + '</li>');
});
console.log(sortRNums);
</script>
Run Code Online (Sandbox Code Playgroud)
产量
<ul id="random">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<ul id="ordered">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
预期产出
<ul id="random">
<li>1</li>
<li>5</li>
<li>3</li>
<li>2</li>
<li>4</li>
</ul>
<ul …Run Code Online (Sandbox Code Playgroud) 我正在实施John Conway生命游戏,但我遇到了一个奇怪的问题.如果代码给我带来麻烦,这是一个简短的版本:
let lifeMap = [
[true, false, false],
[false, false, false],
[false, false, false]
];
let oldLifeMap = lifeMap.slice();
for (let row = 0; row < lifeMap.length; row++) {
for (let val = 0; val < lifeMap[row].length; val++) {
let bool = lifeMap[row][val];
let newBool = false; // here is where I would determine if cell is alive/dead
lifeMap[row][val] = newBool;
if (row === 0 && val === 0) console.log("at (0,0)", oldLifeMap[0][0]);
}
}
Run Code Online (Sandbox Code Playgroud)
为了响应此代码,JavaScript打印at (0,0) false.我需要它一直 …
javascript arrays copy multidimensional-array conways-game-of-life
在下面的代码中,我预计3个日志的结果将是相同的.
但他们不是.
var m = (function () {
var arr = [
{a: 1, b: 2},
{c: 3, d: 4}
];
return {
getArr: function () {
return arr;
}
};
})();
var myArr = m.getArr();
console.log(myArr);
myArr.pop();
console.log(m.getArr());Run Code Online (Sandbox Code Playgroud)
确保数组不作为引用传递的最佳方法是什么?
用return arr.map()吗?