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 と 2 番目の D は x と y の行/列であり、3 番目の次元は残りの可能性のためのものです。

値を完全に削除するにはどうすればよいですか?

配列の長さを知る必要がある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で機能しましたが、実際のコードで問題を解決していません...コードに「未定義」が表示されることがありました..しかし、より大きな問題は、16進ダンプもそこに残っていたことです...長さ、直接小さくしろって言ったのに変わらない…

4

1 に答える 1