js删除对象中的空值
时间: 2023-10-14 21:02:58 浏览: 46
在JavaScript中,我们可以使用递归函数遍历对象的属性,并将属性值为空的属性删除。
首先,我们可以创建一个名为`removeEmpty`的递归函数来遍历对象的属性。这个函数将接受一个对象作为参数并返回一个新的对象,其中删除了空值属性。
在遍历对象的属性时,我们可以使用`Object.keys`方法获取对象的所有属性,并通过`forEach`方法遍历每个属性。对于每个属性,我们可以使用`typeof`操作符检查属性值的类型。如果属性值是对象类型并且不为空,我们可以使用递归调用`removeEmpty`函数获取新的非空对象并将其赋值给当前属性。如果属性值不是对象类型,我们可以检查是否为空字符串、null或undefined,并将满足条件的属性删除。
下面是实现这个递归函数的代码:
```
function removeEmpty(obj) {
Object.keys(obj).forEach(key => {
if (typeof obj[key] === 'object' && obj[key] !== null) {
obj[key] = removeEmpty(obj[key]);
} else {
if (obj[key] === '' || obj[key] === null || obj[key] === undefined) {
delete obj[key];
}
}
});
return obj;
}
```
使用这个函数可以删除对象中的空值属性。例如,对于以下对象:
```javascript
const obj = {
name: 'John',
age: null,
address: {
street: '123 Main St',
city: '',
country: 'USA'
},
hobbies: []
};
```
调用`removeEmpty(obj)`后,将返回以下对象:
```javascript
{
name: 'John',
address: {
street: '123 Main St',
country: 'USA'
}
}
```
上述代码将删除属性`age`,`address.city`和`hobbies`,因为它们的值为空。