簡體   English   中英

Array.splice不會更改長度

[英]Array.splice doesn't change the length

我有一個函數,可以使用.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行/列,而第三個Dimension用於其余位置

一勞永逸地刪除值,該怎么辦?

因為我有一個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保留在那里...因此,即使我直接說他變小了,也沒有改變...

您正在拼接數組之外的元素:

var arr = [1,2,3];
arr.splice(3,1);//doesn't take anything out of the array
arr.length===3;//true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM