我有一个函数,我使用.splice
删除数组的某些部分,但当我查看console.log
的长度时它没有改变..并且使用hexdump我也看到了“删除”字符串仍然存在
e.g。
Sudoku[j][y] = [3, 7]
Sudoku[x][y][k] = 3
function...
Sudoku[j][y].splice(Sudoku[j][y].indexOf(Sudoku[x][y][k]), 1)
console.log(Sudoku[j][y], Sudoku[j][y].length, Hexdump.dump(Sudoku[j][y]))
= [7] 2 /*Zusammenfassung des hex:*/ 3, 7
(应删除的值来自另一个var,这就是我用“indexOf”编写部分的原因)
数独是一个3D矩阵:第一个D和第二个D是x和y行/列,而第三个维度是其余的可能性
我该怎么做才能一劳永逸地删除这个值?
因为我有一个需要知道数组长度的IF ...
在我向我的代码中添加了一堆更多的console.log后,我也看到了那些东西...... 有时...
console.log(sudoku[j][y].length, sudoku[j][y], sudoku[j][y].indexOf(sudoku[x][y][k]))
sudoku[j][y].splice(sudoku[j][y].indexOf(sudoku[x][y][k]), 1);
console.log(sudoku[j][y].length, sudoku[j][y])
结果:
4 [7, 9] 0
3 [7, 9]
所以我最新的尝试是使用新方法而不是拼接:
sudoku[x][j][(sudoku[x][j].indexOf(sudoku[x][y][k]))]=sudoku[x][j][sudoku[x][j][sudoku[x][y].length-1]]
sudoku[x][j].length--
它在jsfiddle工作但是在我的真实代码中没有解决我的问题... 有时我在我的代码中看到了一个“未定义”...但更大的问题是它还将hexdump留在那里......所以即使在我直接说他变小之后,长度也没有改变... < / p>
答案 0 :(得分:0)
你正在拼接一个在数组之外的元素:
var arr = [1,2,3];
arr.splice(3,1);//doesn't take anything out of the array
arr.length===3;//true