如何在 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>
指令碼執行後,將彈出輸出視窗,觸發事件並在網頁上顯示包含值的的物件陣列。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP