У меня есть функция, в которой я удаляю некоторые части массива, используя .splice
, но когда я смотрю на console.log
, его длина не изменилась... и с шестнадцатеричным дампом я также увидел, что "удаленная" строка все еще там
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
(значение, которое должно быть удалено, исходит из другой переменной, поэтому я написал часть с «indexOf»)
Судоку представляет собой трехмерную матрицу: первое D и второе D — это строки/столбцы x и y, а третье измерение — остальные возможности.
Что я могу сделать, чтобы удалить значение раз и навсегда?
потому что у меня есть ЕСЛИ, которому нужно знать длину моих массивов...
после того, как я добавил в свой код еще кучу 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
? Хм... Вы изменили свой массив с 1D на 2D... - person Teemu   schedule 19.08.2013Array.indexOf(3)
есть опечатка... - person user1983983   schedule 19.08.2013