0

我有一个函数,我使用删除数组的某些部分.splice,但是当我查看console.log它的长度时它并没有改变..并且使用 hexdump 我还看到“已删除”字符串仍然存在

例如

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

(要删除的值来自另一个变量,这就是为什么我用“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中工作,但在我的真实代码中没有解决我的问题......有时我在我的代码中看到一个“未定义”......但更大的问题是它也在那里留下了hexdumps......所以长度,即使我直接说他变小了,也没变……

4

1 回答 1

0

您正在拼接数组外部的元素:

var arr = [1,2,3];
arr.splice(3,1);//doesn't take anything out of the array
arr.length===3;//true
于 2013-08-19T12:38:26.033 回答