簡體   English   中英

如何從Javascript中的數組中刪除帶有空字符串的對象?

[英]How can I remove objects with empty strings from array in Javascript?

我有一個看起來像這樣的數組。

var array = [{"Capital":5},{"":""},{"Kichler":6},{"Minka Aire":4},{"Savoy House":2},{"":""},{"":""}]

我想刪除所有帶有空字符串的對象,這樣它就會看起來像這樣......

var array = [{"Capital":5},{"Kichler":6},{"Minka Aire":4},{"Savoy House":2}]

我嘗試編寫一個 for 循環,將數組中的每個項目與 {"":""} 進行比較,但即使對於那些空對象,它仍然返回 false。

任何幫助將不勝感激,提前致謝!

您可以使用filter方法創建一個新數組,該數組包含通過提供的函數實現的測試的所有元素。 然后從對象中解包鍵值並返回空白鍵和值的基礎知識

 var array = [{"Capital":5},{"":""},{"Kichler":6},{"Minka Aire":4},{"Savoy House":2},{"":""},{"":""}] let result = array.filter((i) => { let [key, value] = (Object.entries(i)).flat(); return !(key == "" && value == ""); }); console.log(result);

我已經更新了我的答案,因為有一個非常簡短的選項,它的作用類似於魅力:

 const array = [{"Capital":5},{"":""},{"Kichler":6},{"Minka Aire":4},{"Savoy House":2},{"":""},{"":""}]; const result = array.filter(e => e[''] !== ''); console.log(result);

具有上述條件的簡單filter()

原答案:

所以基本上,如果您在一個名為空字符串的對象中有鍵,就像在您的示例中一樣,這是完全沒問題的。 這意味着您可以通過使用Object.keys()過濾掉它們來輕松找到它們。

基於此,您可以像下面這樣調整Array.prototype.filter()

 const array = [{"Capital":5},{"":""},{"Kichler":6},{"Minka Aire":4},{"Savoy House":2},{"":""},{"":""}]; const result = array.filter(e => !Object.keys(e).includes('')); console.log(result);

在此處進一步了解所使用的方法:

  1. Object.keys()
  2. Array.prototype.filter()
  3. Array.prototype.includes()

我希望這有幫助!

暫無
暫無

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

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