我的对象中的数组充满了错误值。
var drumOn = {}, bassOn = {}, synthOn = {}, keysOn = {};
var fal = [];
for(var j=0; j<16; j++){
fal.push(false);
}
for(var j=0; j<0; j++){
drumOn['s'+j] = (fal);
bassOn['s'+j] = (fal);
synthOn['s'+j] = (fal);
keysOn['s'+j] = (fal);
}
然后我尝试将一个真值添加到一个数组
drumOn['s'+ 0][0] = true;
这为drumOn中的所有数组的第一个元素以及其他对象中的第一个元素添加了一个真值。
我正在对这些对象做的另一件事是检查
if(bassOn['s' + i][j])
我正在使用数组中的数组执行此操作,我遇到了同样的问题。
这很疯狂,我尝试了很多东西,但这没有任何意义。
答案 0 :(得分:3)
Copying array by value in JavaScript
for(var j=0; j<0; j++){
drumOn['s'+j] = fal.slice();
bassOn['s'+j] = fal.slice();
synthOn['s'+j] = fal.slice();
keysOn['s'+j] = fal.slice();
}
slice
返回数组的副本。在您的示例中,所有项都指向相同的原始数组fal
。你需要复制它。