如何在 JavaScript 中移除物件中的所有空物件?


我們的任務是學習如何從 JavaScript 物件中移除所有空物件。讓我們考慮以下物件:

const details =
{
   name: 'John',
   age: {},
   marks: { marks: {} }
}

我們需要移除上面的空物件。可以使用 `forEach()` 結合 `typeof` 和 `delete` 來移除空物件。讓我們深入文章,更好地理解如何移除空物件。

使用 `reduce()`

使用 **`reduce()`** 方法,對陣列的每個元素執行一個 reducer 函式。**`reduce()`** 方法只返回函式的最終結果。對於空陣列元素,**`reduce()`** 方法不會執行該函式。**`reduce()`** 方法不會改變原始陣列。

語法

以下是 **`reduce()`** 的語法:

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

示例

在下面的示例中,我們使用 **`reduce()`** 執行指令碼以從物件中移除空物件。

<!DOCTYPE html>
<html>
   <body>
      <script>
      let details = {
         "company":"Tutorialspoint","school": '',"college": '',
         "address": "kavuri incor9"
      };
      let result = Object.entries(details).reduce((a,[k,v]) => (v == '' ? a : (a[k]=v, a)), {});
      document.write(JSON.stringify(result))
      </script>
   </body>
</html>

指令碼執行後,會在網頁上生成一個輸出,其中包含一個列印的陣列,該陣列包含具有值的的物件,所有空物件都被移除。

使用 `forEach()`

對於陣列中的每個元素,**`forEach()`** 方法都會執行指定的函式一次。

語法

以下是 **`forEach()`** 的語法:

array.forEach(function(currentValue, index, arr), thisValue)

示例

考慮以下示例,我們使用 **`forEach()`** 從物件中移除空物件。

<!DOCTYPE html>
<html>
   <body>
      <script>
         const vehicles = {
            c: 'BENZ',
            a: 'BMW',
            r: '',
            s: ''
         };
         Object.keys(vehicles).forEach(key => {
            if(!vehicles[key])
            delete vehicles[key]
         });
         document.write(JSON.stringify(vehicles))
      </script>
   </body>
</html>

執行上述指令碼後,將彈出輸出視窗,顯示已列印的陣列,該陣列包含網頁上具有值的的物件。

示例

讓我們看下面的例子,這裡我們使用展開語法和 **`forEach()`** 執行指令碼,從物件中移除空物件。

<!DOCTYPE html>
<html>
   <body>
      <script>
      let bikes = {
         bike1: "Rx100",
         bike2: '',
         bike3: '',
         bike4: "vespa"
      };
      let removeobj = {};
      Object.keys(bikes).forEach(val => {
         const newVal = bikes[val];
         removeobj = newVal ? { ...removeobj,
            [val]: newVal
         } : removeobj;
      });
      document.write(JSON.stringify(removeobj));
   </script>
   </body>
</html>

指令碼執行後,將彈出輸出視窗,觸發事件並在網頁上顯示包含值的的物件陣列。

更新於:2023年4月21日

3K+ 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告