如何在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>
当执行脚本时,输出窗口将弹出,触发事件并在网页上显示包含值对象的数组。