簡體   English   中英

Javascript數組過濾器函數刪除鍵值

[英]Javascript array filter function removes key values

我有一個由下面列出的鍵值索引的 Javascript 對象數組,每個鍵代表一個 Javascript 對象(這只是數組中鍵值的 console.log() ):

[ '532',
  '789',
  '1232',
  '2346',
  '3404',
  '4991',
  '5323',
  '5378',
  '8923',
  '9876',
  '23434',
  '23549',
  '24454',
  '34234',
  '45667',
  '48983',
  '67834',
  '72342',
  '82434',
  '89829',
  '98732',
  '123404',
  '143454',
  '234345',
  '345294',
  '532234',
  '532342',
  '532345',
  '532349',
  '989898' ]

當我 console.log() 輸出這個 Javascript 數組時,它用“NULL”值“填充”。 例如,第一個鍵是 532,所以當首先打印這個數組時,會打印 531 個“NULL”值,然后是帶有鍵 532 的 Javascript 對象,每個鍵依此類推。

所以我的解決方案是通過在數組上運行下面的這個函數來刪除空值:

teamData = teamData.filter(function (el) {
   return el != null && el != "";
});

我的問題: 運行該過濾器函數后,數組鍵值將重置為:

[ '0',
  '1',
  '2',
  '3',
  '4',
  '5',
  '6',
  '7',
  '8',
  '9',
  '10',
  '11',
  '12',
  '13',
  '14',
  '15',
  '16',
  '17',
  '18',
  '19',
  '20',
  '21',
  '22',
  '23',
  '24',
  '25',
  '26',
  '27',
  '28',
  '29' ]

問題:有沒有辦法過濾掉數組鍵之間的空值,同時仍然保留第一個數組中的鍵值? 有沒有另一種方法來構造這個數據,所以不會有空值?

問題是您試圖使用數組索引位置作為鍵。 這是行不通的,因為數組總是有從 0 開始的連續索引。所以如果你要在索引 532 處有一個元素,那么它之前一定會有 532 個元素(0 到 531)。 如果您使用filter刪除這些元素,則索引將移動到正確的位置,在您的情況下是從 0 到 29。在 Javascript 中,您的用例有一個本機對象,它稱為 Map, 在這里您可以閱讀有關它的所有內容。

暫無
暫無

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

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